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篩選為零值時,函式會傳回 BLANK;如果內容中有一個以上的相異值result_columnName則傳回錯誤。 |
傳回值
數據列 result_columnName
的值,其中所有配對 search_columnName
和 search_value
都有完全相符的專案。
如果沒有符合所有搜尋值的相符專案,則會傳回 BLANK 或 alternateResult
(如果指定的話)。 換句話說,如果只有部分準則相符,函式就不會傳回查閱值。
如果多個數據列符合搜尋值,且這些數據列 result_columnName
中的值都相同,則會傳回該值。 不過,如果 result_columnName
傳回不同的值,則會傳回錯誤或 alternateResult
(如果指定的話)。
言論
如果數據表之間有關聯性,其中包含結果數據行和包含搜尋數據行的數據表,在大部分情況下,使用 RELATED 函式而不是 LOOKUPVALUE 更有效率,並提供更佳的效能。
您可以指定多個
search_columnName
和search_value
組。在函式逐一查看搜尋數據表的數據列之前,會先評估
search_value
和alternateResult
參數。請避免使用 ISERROR 或 IFERROR 函式來堲取 LOOKUPVALUE所傳回的錯誤。 如果無法判斷單一輸出值時,函式的某些輸入會導致錯誤,則提供
alternateResult
參數是處理錯誤的最可靠且效能最高的方法。alternateResult
參數會在Power Pivot計算結果列中指定時傳回錯誤。在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
範例 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]
)
不過,在此情況下,由於 Sales Order 與 Sales 數據表之間有關聯性,因此使用 RELATED 函式會更有效率。
CHANNEL = RELATED('Sales Order'[Channel])