LOOKUPVALUE

適用於:匯出數據行計算數據表量值視覺計算

傳回符合一或多個搜尋條件所指定之所有準則的數據列值。

語法

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_columnNamesearch_value 都有完全相符的專案。

若無匹配滿足所有搜尋值,函數回傳 BLANK 或 alternateResult (若指定)。 換句話說,如果只有部分準則相符,函式就不會傳回查閱值。

如果多列的搜尋值相符且這些列的 result_columnName 值相同,該值就會回傳。 然而,如果 result_columnName 回傳不同的值,函數會回傳錯誤或 alternateResult (若有指定)。

言論

  • 如果包含結果欄位的資料表與包含搜尋欄位的資料表之間存在關係,在大多數情況下,使用函 RELATED 式代替 LOOKUPVALUE 則更有效率且效能更好。

  • 你可以指定多個 和 search_columnNamesearch_value的對。

  • 在函式逐一查看搜尋數據表的數據列之前,會先評估 search_valuealternateResult 參數。

  • 避免使用 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] )