Exists
(Employee)
|
Возвращает -1 (True), если значение поля Employee в текущей записи уже существует в любой ранее прочитанной записи, содержащей это поле.
Операторы Exists (Employee, Employee) и Exists (Employee) эквивалентны.
|
Exists(Employee,
'Bill')
|
Возвращает -1 (True), если значение поля 'Bill' найдено в текущем содержимом поля Employee.
|
Employees:
LOAD * inline [
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');
Citizens:
Load * inline [
Employee|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Madrid
Lucy|Paris
John|Miami
] (delimiter is '|') where Exists (Employee);
Drop Tables Employees;
|
В результате будет получена таблица, которую можно использовать в визуализации таблицы с помощью измерений Employee и Address.
Предложение where: where Exists (Employee), означает только имена из таблицы Citizens, загруженные в новую таблицу, которые также находятся в таблице Employees. Оператор Drop удаляет таблицу Employees во избежание неопределенности.
Результаты
|
Employee |
Address |
Bill |
New York |
John |
Miami |
Steve |
Chicago |
|
|
Employees:
Load * inline [
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');
Citizens:
Load * inline [
Employee|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Madrid
Lucy|Paris
John|Miami
] (delimiter is '|') where not Exists (Employee);
Drop Tables Employees;
|
Предложение where, включая not: where not Exists (Employee, Name).
Это означает, что в новую таблицу загружаются только имена из таблицы Citizens, отсутствующие в таблице Employees.
Обратите внимание, что для Lucy в таблице Citizens имеются два значения, однако в результирующую таблицу включается только одно из них. При загрузке первой строки значение включается в таблицу символов Employee. Таким образом, в ходе проверки второй строки значение существует.
В следующем примере показан порядок загрузки всех значений.
Результаты
|
Employee |
Address |
Mary |
London |
Lucy |
Madrid |
|
Сотрудники: Load Employee As Name, ID, Salary; LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|'); Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Name, Employee); Drop Tables Employees;
|
Чтобы получить все значения для Lucy, необходимо внести два изменения:
-
Добавьте предшествующий оператор load к Employees, где необходимо переименовать Employee на Name.
Load Employee As Name, ID, Salary;
-
Измените условие Where в Citizens на:
not Exists (Name, Employee).
Будут созданы разные таблицы символов для Name и Employee. В ходе проверки второй строки для значения Lucy оно не будет существовать в Name.
Employee |
Address |
Mary |
London |
Lucy |
Madrid |
Lucy |
Paris |
|