Exists — funkcja skryptu
Funkcja Exists() określa, czy podana wartość pola została już załadowana w polu w skrypcie ładowania danych. Funkcja zwraca wartość TRUE lub FALSE, dzięki czemu może zostać użyta w klauzuli where instrukcji LOAD lub instrukcji IF.
Składnia:
Exists(field_name [, expr])
Typ zwracanych danych: wartość logiczna
Argumenty:
Argument | Opis |
---|---|
field_name |
Nazwa pola, w którym ma być wyszukiwana wartość. Można użyć jawnej nazwy pola bez cudzysłowów. Pole musi być już załadowane przez skrypt. Oznacza to, że nie można odwoływać się do pola, które jest ładowane przez klauzulę znajdującą się w dalszej części skryptu. |
expr |
Wartość, która ma zostać sprawdzona pod kątem tego, czy istnieje. Można użyć wartości jawnej albo wyrażenia, które odwołuje się do jednego lub wielu pól w bieżącej instrukcji LOAD. InformacjaNie można odwoływać się do pól, które nie są uwzględnione w bieżącej instrukcji LOAD.
Ten argument jest opcjonalny. Jeśli zostanie pominięty, funkcja będzie sprawdzać, czy wartość field_name w bieżącym rekordzie już istnieje. |
Dane zastosowane w przykładzie:
Przykład:
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.
Instrukcje Exists (Employee, Employee) i Exists (Employee) są równoważne.
Przykład:
Exists(Employee, 'Bill')
Zwraca –1 (True), jeśli wartość pola 'Bill' występuje w bieżącej zawartości pola Employee.
Przykład:
W efekcie otrzymuje się tabelę, której można użyć w wizualizacji tabeli przy użyciu wymiarów Employee i Address.
Klauzula where: where Exists (Employee) oznacza, że tylko nazwy z tabeliCitizens, które znajdują się także w tabeli Employees, są ładowane do nowej tabeli. Instrukcja Drop usuwa tabelę Employees w celu uniknięcia pomyłek.
Employee | Address |
Bill | New York |
John | Miami |
Steve | Chicago |
Przykład:
Klauzula where zawiera not: where not Exists (Employee, Name).
To oznacza, że tylko te nazwy z tabeli Citizens, które nie znajdują się w tabeli Employees, są ładowane do nowej tabeli.
Zwróć uwagę, że istnieją dwie wartości dla Lucy w tabeli Citizens, ale tylko jedna jest uwzględniana w tabeli wynikowej. W momencie ładowania pierwszego wiersza wartość jest zawarta w tabeli symboli Employee. Z tego powodu w momencie sprawdzania drugiego wiersza ta wartość już istnieje.
W następnym przykładzie pokazano, w jaki sposób załadować wszystkie wartości.
Pracownik | Adres |
---|---|
Mary | London |
Lucy | Madrid |
Przykład:
Aby można było pobrać wszystkie wartości dla Lucy, należy zmienić dwie rzeczy:
-
Dodać wcześniejszą instrukcję load do tabeli Employees, w której nastąpi zmiana nazwy pola z Employee na Name.
Load Employee As Name, ID, Salary;
-
Zmienić warunek Where w Citizens na:
not Exists (Name, Employee).
W ten sposób zostaną utworzone różne tabele symboli dla Name i Employee. W momencie sprawdzania drugiego wiersza pod kątem wartości Lucy nadal nie istnieje ona w tabeli Name.
Pracownik | Adres |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |