傳回符合一或多個搜尋條件所指定之所有準則的數據列值。
語法
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
參數
| 術語 | 定義 |
|---|---|
result_columnName |
包含您要傳回之值的現有資料行名稱。 這不可能是個說法。 |
search_columnName |
現有數據行的名稱。 它可以位於與result_columnName或相關數據表相同的數據表中。 這不可能是個說法。 你可以指定多對search_columnName和search_value。 |
search_value |
在 search_columnName 中搜尋的值。 你可以指定多對search_columnName和search_value。 |
alternateResult |
(可選)當 上下文被篩選到零或多個不同值時,該值會回傳result_columnName。 若未指定,當 result_columnName 被篩選至零值時,函式會回傳;當 result_columnName 的上下文有多個不同值時,函式會回傳 BLANK 錯誤。 |
傳回值
數據列 result_columnName 的值,其中所有配對 search_columnName 和 search_value 都有完全相符的專案。
若無匹配滿足所有搜尋值,函數回傳 BLANK 或 alternateResult (若指定)。 換句話說,如果只有部分準則相符,函式就不會傳回查閱值。
如果多列的搜尋值相符且這些列的 result_columnName 值相同,該值就會回傳。 然而,如果 result_columnName 回傳不同的值,函數會回傳錯誤或 alternateResult (若有指定)。
言論
如果包含結果欄位的資料表與包含搜尋欄位的資料表之間存在關係,在大多數情況下,使用函 RELATED 式代替 LOOKUPVALUE 則更有效率且效能更好。
你可以指定多個 和
search_columnNamesearch_value的對。在函式逐一查看搜尋數據表的數據列之前,會先評估
search_value和alternateResult參數。避免使用 ISERROR 或 IFERROR 擷取由 返回的 LOOKUPVALUE錯誤。 如果某些輸入導致無法確定單一輸出值而產生錯誤,提供
alternateResult參數是最可靠且效能最高的處理錯誤方式。alternateResult參數會在Power Pivot計算結果列中指定時傳回錯誤。-
在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
本文中的範例可以搭配範例 Adventure Works DW 2020 Power BI Desktop 模型使用。 若要取得模型,請參閱 DAX 範例模型。
範例 1
在此範例中, LOOKUPVALUE 搜尋訂單下達當天用於支付該貨幣的平均匯率:
Exchange Rate =
LOOKUPVALUE (
'Currency Rate'[Average Rate],
'Currency Rate'[CurrencyKey], [CurrencyKey],
'Currency Rate'[DateKey], [OrderDateKey]
)
你需要同時取得訂單日期和貨幣,才能找到正確日期和貨幣的平均利率。 OrderDateKey 和 CurrencyKey 是用來查閱貨幣匯率數據表中平均值的索引鍵。
您可以使用匯率,以下列方式計算當地貨幣的銷售金額:
Sales Amount Local Currency =
[Sales Amount] * [Exchange Rate]
範例 2
在此範例中,Sales 數據表中定義的下列匯出數據行會使用 LOOKUPVALUE 函數,從 Sales Order 數據表傳回通道值。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey], [SalesOrderLineKey]
)
然而,在這種情況下,因為 銷售訂單 與 銷售 資料表之間存在關係,使用這個 RELATED 函式會更有效率。
CHANNEL =
RELATED ( 'Sales Order'[Channel] )