Exists
(Employee)
|
Retorna -1 (True) se o valor do campo Employee no registro atual já existir em qualquer registro lido anteriormente que contenha esse campo.
|
Exists(Employee,
'Bill')
|
Retorna -1 (True) se o valor de campo 'Bill' for encontrado no conteúdo atual do campo Employee.
Os comandos Exists (Employee, Employee) e Exists (Employee) são equivalentes.
|
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;
|
Isso resulta em uma tabela chamada EmployeeAddresses no modelo de dados, que pode ser visualizado como uma visualização de tabelas usando as dimensões Employee e Address.
A cláusula where: where Exists (Employee, Name) significa que apenas os nomes da tabelaCitizens que também estão em Employees são carregados para a nova tabela. O comando Drop remove as tabelas temporárias Employees e Citizens para evitar confusão.
|
Employee |
Address |
Bill |
New York |
John |
Miami |
Steve |
Chicago |
|
|
Substituir o comando nos dados de amostra do exemplo anterior, que constrói a tabela EmployeeAddresses com o seguinte, usando where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
|
A cláusula where inclui not: where not Exists (Employee, Name) significa que apenas os nomes da tabelaCitizens que também estão em Employees são carregados para a nova tabela.
|
Employee |
Address |
Mary |
London |
Lucy |
Paris |
|