LOOKUPVALUE
返回满足一个 or 更多 search 条件指定的 all 条件的行的 value。
语法
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
参数
术语 | 定义 |
---|---|
result_columnName |
contains 要返回 value 的现有列的名称。 它不能是表达式。 |
search_columnName |
现有列的名称。 它可以与 related 表中的result_columnName or位于同一表中。 它不能是表达式。 可以指定多个search_columnName and search_value对。 |
search_value |
search_columnName中要 search 的 value。 可以指定多个search_columnName and search_value对。 |
alternateResult |
(可选)当result_columnName的上下文被筛选为零 or 多个不同的 value时返回的 value。 If not 指定,当result_columnName筛选为零时,函数将返回 BLANK,valuesorerror 在上下文中有多个不同 value 时result_columnName。 |
返回 value
all 对 search_columnName
andsearch_value
具有 exact 匹配的行 result_columnName
的 value。
If 没有满足 searchvaluesallBLANKoralternateResult
(指定if)的匹配项。 换句话说,该函数不会返回查找 valueif 某些条件匹配。
If 多行与这些行的 result_columnName
中的 searchvaluesandvalues 相同,然后返回 value。 但是,ifresult_columnName
返回不同的 values,将返回 errororalternateResult
(if 指定)。
言论
If 表之间存在 contains 包含 search 列的结果列 and 表之间的关系,在大多数情况下,使用 RELATED 函数而不是 LOOKUPVALUE 更高效,and 提供更好的性能。
可以指定多个
search_columnName
andsearch_value
对。在函数循环访问 search 表的行之前,将计算
search_value
andalternateResult
参数。避免使用 ISERRORorIFERROR 函数捕获 LOOKUPVALUE返回的 error。 当无法确定单个输出 value 时,If 函数的某些输入会导致 error,提供
alternateResult
参数是处理 error最可靠的 and 最高性能方法。alternateResult
参数返回 Power 透视计算列中指定的 errorif。在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。
示例 1
在此示例中,LOOKUPVALUE 用于 searchAverageRate 用于支付订单 day 订单的 currency:
Exchange Rate =
LOOKUPVALUE (
'Currency Rate'[Average Rate],
'Currency Rate'[CurrencyKey], [CurrencyKey],
'Currency Rate'[DateKey], [OrderDateKey]
)
find 正确的 dateandcurrencyAverageRate 都需要订单 DateandCurrency。 OrderDateKey and CurrencyKey 是用于查找 CurrencyRate 表中 AverageRate 的键。
可以使用 Exchange Rate 在本地 currency 中 calculate 销售额,
Sales Amount Local Currency = [Sales Amount] * [Exchange Rate]
示例 2
在此示例中,Sales 表中定义的以下计算列使用 LOOKUPVALUE 函数从 Sales Order 表中返回通道 values。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
但是,在这种情况下,由于 Sales OrderandSales 表之间存在关系,因此使用 RELATED 函数更高效。
CHANNEL = RELATED('Sales Order'[Channel])