LOOKUPVALUE

适用于:计算列计算表度量值视觉对象计算

返回满足一个或多个搜索条件所指定的所有条件的行的值。

语法

DAX
LOOKUPVALUE (
    <result_columnName>,
    <search_columnName>,
    <search_value>
    [, <search2_columnName>, <search2_value>]…
    [, <alternateResult>]
)

parameters

术语 定义
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 的上下文中存在多个非重复值时返回错误。

返回值

所有 search_columnNamesearch_value 对都匹配的行上的 result_columnName 的值。

如果没有符合所有搜索值的匹配项,则返回 BLANK 或 alternateResult(如果已指定)。 换句话说,如果仅部分条件匹配,则该函数不会返回查找值。

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

备注

  • 如果包含结果列的表和包含搜索列的表之间存在关系,则在大多数情况下,使用 RELATED 函数(而不是 LOOKUPVALUE)会更高效,并可以获得更好的性能。

  • 可以指定多对 search_columnNamesearch_value

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

  • 避免使用 ISERROR 或 IFERROR 函数来捕获 LOOKUPVALUE 返回的错误。 如果输入某些值,函数无法确定单个输出值时,会导致错误,在这种情况下,提供 alternateResult 参数是处理该错误的最可靠、性能最高的方式。

  • 如果在 Power Pivot 计算列中指定了 alternateResult 参数,该参数将返回错误。

  • 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例 1

在此示例中,LOOKUPVALUE 用于在订单下单当天搜索用于支付订单的货币的“平均费率”:

DAX
Exchange Rate = 
LOOKUPVALUE (
    'Currency Rate'[Average Rate],
    'Currency Rate'[CurrencyKey], [CurrencyKey],
    'Currency Rate'[DateKey], [OrderDateKey]
)

需要“订单日期”和“货币”才能找到相应货币在正确日期的平均费率。 OrderDateKey 和 CurrencyKey 是用于在“货币汇率”表中查找“平均汇率”的键。

可以使用汇率以本地货币计算销售金额:

DAX
Sales Amount Local Currency = [Sales Amount] * [Exchange Rate]

示例 2

在此示例中,“销售额”表中定义的以下计算列使用 LOOKUPVALUE 函数返回来自“销售订单”表中的渠道值。

DAX
CHANNEL = 
LOOKUPVALUE (
    'Sales Order'[Channel],
    'Sales Order'[SalesOrderLineKey],
    [SalesOrderLineKey]
)

不过, 在这种情况下,由于“销售订单”表和“销售额”表之间存在关系,因此使用 RELATED 函数会更有效。

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

RELATED 函数 (DAX)
信息函数