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筛选为零值时返回;如果result_columnName的上下文具有多个非重复值,则返回 BLANK 错误。

返回值

行中 result_columnName 的值,其中所有 search_columnName 对和 search_value 都具有完全匹配项。

如果没有匹配项满足所有搜索值,函数将 BLANK 返回或 alternateResult (如果指定)。 换句话说,仅当某些条件匹配时,该函数不会返回查找值。

如果多个行与搜索值匹配,并且这些行中的 result_columnName 值相同,则返回该值。 但是,如果 result_columnName 返回不同的值,函数将返回错误或 alternateResult (如果指定)。

言论

  • 如果表之间存在包含结果列和包含搜索列的表之间的关系,则在大多数情况下,使用 RELATED 函数而不是 LOOKUPVALUE 更高效地使用该函数并提供更好的性能。

  • 可以指定多个对 search_columnNamesearch_value

  • 在函数循环访问搜索表的行之前,将计算 search_valuealternateResult 参数。

  • 避免使用 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 OrderSales 表之间存在关系,因此使用函数 RELATED 更高效。

CHANNEL =
RELATED ( 'Sales Order'[Channel] )