Exists - 脚本函数
Exists() 用于确定是否已经将特定字段值加载到数据加载脚本中的字段。此函数用于返回 TRUE 或 FALSE,这样它可以用于 LOAD 语句或 IF 语句中的 where 子句。
Syntax:
Exists(field_name [, expr])
Return data type: 布尔值
Arguments:
参数 | 说明 |
---|---|
field_name |
您希望在其中搜索值的字段的名称。您可使用没有引号的确切字段名称。 字段必须已经由脚本加载。这意味着您无法在脚本中进一步往下引用在子句中加载的字段。 |
expr |
您希望检查值是否存在。您可使用引用当前加载语句中一个或数个字段的确切值或表达式。 信息注释您无法引用未包含在当前加载语句中的字段。
该参数为可选。如果您忽略它,函数将检查当前记录中的 field_name 的值是否已存在。 |
示例中所使用的数据:
Example:
Exists (Employee)
如果当前记录中的字段值 Employee 已存在于任何以前已读入的包含该字段的记录,则返回 -1 (True)。
语句 Exists (Employee, Employee) 和 Exists (Employee) 功能相同。
Example:
Exists(Employee, 'Bill')
如果在字段 Employee(员工)的当前内容中发现字段值 'Bill',则返回 -1 (True)。
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(员工)中的姓名加载到新表格。
请注意在 Citizens(市民)中对于 Lucy 有两个值,但是在结果表格中仅包含了一个。当您加载第一行时,值包含在 Employee(员工)符号表格中。因此,当检查第二行时,现在已存在值。
下个示例示出如何加载所有值。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Example:
要得到 Lucy 的所有值,您需要进行两项更改:
-
将前置 Load 添加到您在其中将 Employee(员工)重命名为 Name(名称)的 Employees(员工)。
Load Employee As Name, ID, Salary;
-
在 Citizens(市民)中将 Where 条件更改为:
not Exists (Name, Employee)。
由此将为 Name(名称)和 Employee(员工)创建不同的符号表格。如果检查 Lucy 的第二行,它仍未存在于 Name(名称)中。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |