返回满足一个或多个搜索条件指定的所有条件的行的值。
语法
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_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 模式下使用此函数。
本文中的示例可用于示例 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]
)
但是,在这种情况下,由于 Sales Order 和 Sales 表之间存在关系,因此使用函数 RELATED 更高效。
CHANNEL =
RELATED ( 'Sales Order'[Channel] )