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_columnNamesearch_value 对。

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

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

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

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

示例 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])

RELATED 函数 (DAX)
信息函数