Exists
(Employee)
|
Retourneert -1 (True) als de waarde van het veld Employee in de huidige record al bestaat in een eerder gelezen record met dat veld.
|
Exists(Employee,
'Bill')
|
Retourneert -1 (True) als de veldwaarde 'Bill' wordt gevonden in de huidige inhoud van het veld Employee.
De opdrachten Exists (Employee, Employee) en Exists (Employee) zijn equivalent.
|
Employees:
LOAD * inline [
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');
Citizens:
Load * inline [
Name|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Paris
John|Miami
] (delimiter is '|');
EmployeeAddresses:
Load Name as Employee, Address Resident Citizens where Exists (Employee, Name);
Drop Tables Employees, Citizens;
|
Dit resulteert in een tabel met de naam EmployeeAddresses in het gegevensmodel, die kan worden bekeken als een tabelgrafiek met de dimensies Employee en Address.
De clausule where: where Exists (Employee, Name), betekent dat alleen de namen uit de tabel Citizens die tevens in Employees voorkomen in de nieuwe tabel worden geladen. Met de opdracht Drop worden de tijdelijke tabellen Employees en Citizens verwijderd om verwarring te voorkomen.
|
Employee |
Address |
Bill |
New York |
John |
Miami |
Steve |
Chicago |
|
|
De opdrachten in de voorbeeldgegevens in het vorige voorbeeld waarmee de tabel EmployeeAddresses wordt samengesteld worden hierbij vervangen door de volgende, met behulp van where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
|
De clausule where bevat not: where not Exists (Employee, Name), betekent dat alleen de namen uit de tabel Citizens die niet in Employees voorkomen in de nieuwe tabel worden geladen.
|
Employee |
Address |
Mary |
London |
Lucy |
Paris |
|