活动
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 模式下使用此函数。
在此示例中,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]
在此示例中,Sales 表中定义的以下计算列使用 LOOKUPVALUE 函数从 Sales Order 表中返回通道值。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
但是,在这种情况下,由于 Sales Order 与 Sales 表之间存在关系,因此使用 RELATED 函数更高效。
CHANNEL = RELATED('Sales Order'[Channel])