Exists — funkcja skryptu
Funkcja Exists() określa, czy podana wartość pola została już załadowana w polu w skrypcie ładowania. Funkcja zwraca wartość TRUE lub FALSE, dzięki czemu może zostać użyta w klauzuli where instrukcji LOAD lub funkcji IF.
Składnia:
Exists(field_name [, expr] )
Typ zwracanych danych: wartość logiczna
Argumenty:
Argument | Opis |
---|---|
field_name |
Nazwa pola, w którym chcesz wyszukać wartość. Można użyć konkretnej nazwy pola bez cudzysłowów. Pole musi być już załadowane przez skrypt. Oznacza to, że nie można odnosić się do pola, które jest ładowane w klauzuli znajdującej się dalej w skrypcie. |
expr |
Wartość, której istnienie chcemy sprawdzić. Można użyć konkretnej wartości lub wyrażenia, które odnosi się do jednego lub kilku pól w bieżącej instrukcji LOAD. InformacjaNie można odnosić się do pól, które nie są zawarte w aktualnej instrukcji LOAD.
Ten argument jest opcjonalny. W przypadku jego pominięcia funkcja sprawdzi, czy wartość field_name w bieżącym rekordzie już istnieje. |
Przykład 1:
Exists (Employee)
Zwraca –1 (True), jeśli wartość pola Employee w bieżącym rekordzie już istnieje w jakimkolwiek wcześniej wczytanym rekordzie zawierającym to pole.
Przykład 2:
Exists(Employee, 'Bill')
Zwraca –1 (True), jeśli wartość pola 'Bill' występuje w bieżącej zawartości pola Employee.
Instrukcje Exists (Employee, Employee) i Exists (Employee) są równoważne.
Przykład 3:
W efekcie otrzymuje się tabelę o nazwie Citizens w modelu danych, którą można wyświetlać jako wykres tabeli przy użyciu wymiarów Employee i Address.
Klauzula where w postaci where Exists (Employee) oznacza, że tylko nazwy z tabeli Citizens, które znajdują się także w tabeli Employees, są ładowane do nowej tabeli. Instrukcja Drop umożliwia usunięcie tabeli tymczasowej Employees w celu uniknięcia pomyłek.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Przykład 4:
Klauzula where uwzględnia not: where not Exists (Employee).
Oznacza to, że do nowej tabeli ładowane są tylko te nazwy z tabeli Citizens, których nie ma w Employees.
Zauważ, że w tabeli Citizens znajdują się dwie wartości Lucy, ale tylko jedna z nich jest uwzględniona w tabeli wyników. Po załadowaniu pierwszego wiersza wartość Lucy jest umieszczana w polu Employee. W związku z tym, gdy sprawdzany jest drugi wiersz, wartość już istnieje.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Przykład 5:
Ten przykład pokazuje, jak załadować wszystkie wartości.
Aby móc uzyskać wszystkie wartości dla Lucy, zmieniono dwie rzeczy:
-
Wstawiono poprzedzającą instrukcję LOAD w celu ładowania do tabeli Employees, gdzie zmieniono nazwę Employee na Name.
Load Employee As Name;
-
Warunek Where w Citizens zmieniono na:
not Exists (Name, Employee).
Powoduje to utworzenie pól dla Name i Employee. Kiedy sprawdzany jest drugi wiersz z Lucy, to nadal nie istnieje w Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Dane zastosowane w przykładzie: