Exists — функция скрипта
Функция Exists() определяет, загружено ли определенное значение поля в поле в скрипте загрузки данных. Функция возвращает значение TRUE или FALSE, таким образом, ее можно использовать в предложении where оператора LOAD или IF.
Syntax:
Exists(field_name [, expr])
Return data type: Булево значение
Arguments:
Аргумент | Описание |
---|---|
field_name |
Имя поля, в котором необходимо выполнить поиск значения. Можно использовать явное имя поля без кавычек. Поле должно быть уже загружено при помощи скрипта. Это означает, что нельзя ссылаться на поле, загруженное предложением далее по скрипту. |
expr |
Значение, которое необходимо проверить, при условии его существования. Можно использовать явное значение или выражение, которое ссылается на одно или несколько полей текущего оператора load. Примечание об информацииНельзя ссылаться на поля, не включенные в текущий оператор load.
Данный аргумент является дополнительным. Если его пропустить, функция будет проверять, существует ли значение field_name в текущей записи. |
Данные, используемые в примере:
Example:
Exists (Employee)
Возвращает -1 (True), если значение поля Employee в текущей записи уже существует в любой ранее прочитанной записи, содержащей это поле.
Операторы Exists (Employee, Employee) и Exists (Employee) эквивалентны.
Example:
Exists(Employee, 'Bill')
Возвращает -1 (True), если значение поля 'Bill' найдено в текущем содержимом поля Employee.
Example:
В результате будет получена таблица, которую можно использовать в визуализации таблицы с помощью измерений Employee и Address.
Предложение where: where Exists (Employee), означает только имена из таблицы Citizens, загруженные в новую таблицу, которые также находятся в таблице Employees. Оператор Drop удаляет таблицу Employees во избежание неопределенности.
Employee | Address |
Bill | New York |
John | Miami |
Steve | Chicago |
Example:
Предложение where, включая not: where not Exists (Employee, Name).
Это означает, что в новую таблицу загружаются только имена из таблицы Citizens, отсутствующие в таблице Employees.
Обратите внимание, что для Lucy в таблице Citizens имеются два значения, однако в результирующую таблицу включается только одно из них. При загрузке первой строки значение включается в таблицу символов Employee. Таким образом, в ходе проверки второй строки значение существует.
В следующем примере показан порядок загрузки всех значений.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Example:
Чтобы получить все значения для 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 |