Exists - script function
Exists() determines whether a specific field value has already been loaded into the field in the load script. The function returns TRUE or FALSE, so can be used in the where clause of a LOAD statement or an IF function.
Syntax:
Exists(field_name [, expr] )
Return data type: Boolean
Arguments:
Argument | Description |
---|---|
field_name |
The name of the field where you want to search for a value. You can use an explicit field name without quotes. The field must already be loaded by the script. That means, you cannot refer to a field that is loaded in a clause further down in the script. |
expr |
The value that you want to check if it exists. You can use an explicit value or an expression that refers to one or several fields in the current load statement. Information noteYou cannot refer to fields that are not included in the current load statement.
This argument is optional. If you omit it, the function will check if the value of field_name in the current record already exists. |
Example 1:
Exists (Employee)
Returns -1 (True) if the value of the field Employee in the current record already exists in any previously read record containing that field.
Example 2:
Exists(Employee, 'Bill')
Returns -1 (True) if the field value 'Bill' is found in the current content of the field Employee.
The statements Exists (Employee, Employee) and Exists (Employee) are equivalent.
Example 3:
This results in a table called Citizens in the data model, which can be viewed as a table chart using the dimensions Employee and Address.
The where clause: where Exists (Employee), means only the names from the table Citizens that are also in Employees are loaded into the new table. The Drop statement removes the temporary table Employees to avoid confusion.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Example 4:
The where clause includes not: where not Exists (Employee).
This means that only the names from the table Citizens that are not in Employees are loaded into the new table.
Note that there are two values for Lucy in the Citizens table, but only one is included in the result table. When you load the first row with the value Lucy, it is included in the Employee field. Hence, when the second line is checked, the value already exists.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Example 5:
This example shows how to load all values.
To be able to get all values for Lucy, two things were changed:
-
A preceding load to the Employees table was inserted where Employee was renamed to Name.
Load Employee As Name;
-
The Where condition in Citizens was changed to:
not Exists (Name, Employee).
This creates fields for Name and Employee. When the second row with Lucy is checked, it still does not exist in Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Data used in example: