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 tabelvisualisatie met de dimensies Employee en Address.
De where-clausule: 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 opdracht in de steekproefgegevens in het vorige voorbeeld waarbij de tabel EmployeeAddresses wordt opgebouwd, wordt vervangen door de volgende, waarbij gebruik wordt gemaakt van where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
|
De where-clausule omvat 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 |
|