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')
如果欄位值 'Bill' 被發現位於欄位 Employee 的目前內容中,則會傳回 -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)。
這表示,只有來自不是位於 Employees 的表格 Citizens 的名稱會載入新的表格中。
請注意,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 |
範例中使用的資料: