Exists - 脚本函数
Exists() 用于确定是否已经将特定字段值加载到加载脚本中的字段。此函数用于返回 TRUE 或 FALSE,这样它可以用于 LOAD 语句或 IF 函数中的 where 子句。
语法:
Exists(field_name [, expr] )
返回数据类型: 布尔值
参数:
参数 | 说明 |
---|---|
field_name |
要在其中搜索值的字段的名称。可以使用不带引号的显式字段名称。 字段必须已经由脚本加载。这意味着,不能引用在脚本中后面的子句中加载的字段。 |
expr |
要检查其是否存在的值。可以使用显式值或引用当前 LOAD 语句中一个或多个字段的表达式。 信息注释不能引用当前 LOAD 语句中未包含的字段。
该参数是可选的。如果省略它,函数将检查当前记录中 field_name 的值是否已存在。 |
示例 1:
Exists (Employee)
如果当前记录中的字段值 Employee 已存在于任何以前已读入的包含该字段的记录,则返回 -1 (True)。
示例 2:
Exists(Employee, 'Bill')
如果在字段 Employee 的当前内容中发现字段值 'Bill',则返回 -1 (True)。
语句 Exists (Employee, Employee) 和 Exists (Employee) 功能相同。
示例 3:
这将会在数据模型中生成名为 Citizens 的表格,可将该表格看作是使用维度 Employee 和 Address 的表格图表。
where 子句:where Exists (Employee),是指只能从表格 Citizens 中将同时位于 Employees 中的姓名加载到新表格。Drop 语句将删除临时表格 Employees 以避免混淆。
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
示例 4:
where 子句包括 not: where not Exists (Employee)。
这意味着只能从表格 Citizens 将不在 Employees 中的姓名加载到新表格。
请注意,Citizens 表中有两个 Lucy 的值,但结果表中只包含一个。加载有值 Lucy 的第一行时,该值将包含在 Employee 字段中。因此,当检查第二行时,该值已经存在。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
示例 5:
该示例示出如何加载所有值。
为了能够获得 Lucy 的所有值,进行了两项更改:
-
Employees 表的前一次加载已插入,其中 Employee 重命名为 Name。
Load Employee As Name;
-
将 Citizens 中的 Where 条件更改为:
not Exists (Name, Employee).
这将为 Name 和 Employee 创建字段。如果检查带 Lucy 的第二行,它仍然未存在于 Name 中。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
示例中所使用的数据: