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 參數是處理錯誤最可靠且效能最高的方法。
若在 Power Pivot 計算資料行中指定 alternateResult 參數時,其會傳回錯誤。
在計算結果欄或資料列層級安全性 (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
在本範例中,銷售資料表定義的下列計算結果欄,會使用 LOOKUPVALUE 函式傳回銷售訂單資料表的通路值。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
不過,在這情況下,因為銷售訂單和銷售資料表有關聯性,所以使用 RELATED 函式會更有效率。
CHANNEL = RELATED('Sales Order'[Channel])