LookUp - 指令碼函數
Lookup() 會查看已載入的表格,並且傳回的 field_name 值相當於欄位 match_field_name 中出現的第一個值 match_field_value。該表格可以是目前表格,或者先前載入的另一個表格。
語法:
lookup(field_name,
match_field_name, match_field_value [, table_name])
傳回的資料類型: 雙值
引數:
引數
field_name |
需要傳回值的欄位的名稱。 輸入值必須指定為字串 (如引號中的常值)。 |
match_field_name |
要在其中查閱 match_field_value 之欄位的名稱。 輸入值必須指定為字串 (如引號中的常值)。 |
match_field_value |
要在 match_field_name 欄位中查閱的值。 |
table_name |
要在其中查閱值的表格名稱。輸入值必須指定為字串 (如引號中的常值)。
如果省略 table_name,則會採用目前表格。
|
資訊備註不含引號的引數會參考目前表格。若要參考其他表格,請將引數含括在單引號中。
限制:
搜尋順序為載入順序,除非表格是複雜運算 (如 join) 的結果,若是如此,順序無法明確定義。field_name 和 match_field_name 必須是相同表格 (以 table_name 指定) 中的欄位。
如果找不到符合的值,則會傳回 NULL。
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入,以建立以下範例。
ProductList:
Load * Inline [
ProductID|Product|Category|Price
1|AA|1|1
2|BB|1|3
3|CC|2|8
4|DD|3|2
] (delimiter is '|');
OrderData:
Load *, Lookup('Category', 'ProductID', ProductID, 'ProductList') as CategoryID
Inline [
InvoiceID|CustomerID|ProductID|Units
1|Astrida|1|8
1|Astrida|2|6
2|Betacab|3|10
3|Divadip|3|5
4|Divadip|4|10
] (delimiter is '|');
Drop Table ProductList;
如需更多關於使用內嵌載入的資訊,請參閱 使用內嵌載入以載入資料。
建立視覺化
在 Qlik Sense 工作表中建立表格視覺化。將欄位 ProductID、InvoiceID、CustomerID、Units 和 CategoryID 新增至表格。
結果
結果表格
ProductID (產品 ID) |
InvoiceID |
設定 CustomerID: |
單位: |
CategoryID |
1 |
1 |
Astrida |
8 |
1 |
2 | 1 | Astrida | 6 | 1 |
3 | 2 | Betacab | 10 | 2 |
3 | 3 | Divadip | 5 | 2 |
4 | 4 | Divadip | 10 | 3 |
解釋
範例資料使用下列形式的 Lookup() 函數:
Lookup('Category', 'ProductID', ProductID, 'ProductList')
首先載入 ProductList 表格。
Lookup() 函數用來建置 OrderData 表格。如果將第三個引數指定為 ProductID。這是將在 ProductList 的第二個引數 'ProductID' 中查閱值的欄位,如含括的單引號所指示。
函數傳回 'Category' (在 ProductList 表格中) 的值,作為 CategoryID 載入。
drop 陳述式會從資料模型中刪除 ProductList 表格,因為不需要該項目,這會留下產生的 OrderData 表格。
資訊備註
Lookup() 函數是彈性的,可以存取任何先前載入的表格。然而,它與 Applymap() 函數相比較速度較慢。