LOOKUPVALUE

适用于:计算列计算表Measure视觉计算

返回满足一个 or 更多 search 条件指定的 all 条件的行的 value。

语法

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

参数

术语 定义
result_columnName contains 要返回 value 的现有列的名称。 它不能是表达式。
search_columnName 现有列的名称。 它可以与 related 表中的result_columnName or位于同一表中。 它不能是表达式。 可以指定多个search_columnName and search_value对。
search_value search_columnName中要 search 的 value。 可以指定多个search_columnName and search_value对。
alternateResult (可选)当result_columnName的上下文被筛选为零 or 多个不同的 value时返回的 value。 If not 指定,当result_columnName筛选为零时,函数将返回 BLANK,valuesorerror 在上下文中有多个不同 value 时result_columnName。

返回 value

all 对 search_columnNameandsearch_value 具有 exact 匹配的行 result_columnName 的 value。

If 没有满足 searchvaluesallBLANKoralternateResult(指定if)的匹配项。 换句话说,该函数不会返回查找 valueif 某些条件匹配。

If 多行与这些行的 result_columnName 中的 searchvaluesandvalues 相同,然后返回 value。 但是,ifresult_columnName 返回不同的 values,将返回 errororalternateResult(if 指定)。

言论

  • If 表之间存在 contains 包含 search 列的结果列 and 表之间的关系,在大多数情况下,使用 RELATED 函数而不是 LOOKUPVALUE 更高效,and 提供更好的性能。

  • 可以指定多个 search_columnNameandsearch_value 对。

  • 在函数循环访问 search 表的行之前,将计算 search_valueandalternateResult 参数。

  • 避免使用 ISERRORorIFERROR 函数捕获 LOOKUPVALUE返回的 error。 当无法确定单个输出 value 时,If 函数的某些输入会导致 error,提供 alternateResult 参数是处理 error最可靠的 and 最高性能方法。

  • alternateResult 参数返回 Power 透视计算列中指定的 errorif。

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

示例 1

在此示例中,LOOKUPVALUE 用于 searchAverageRate 用于支付订单 day 订单的 currency:

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

find 正确的 dateandcurrencyAverageRate 都需要订单 DateandCurrency。 OrderDateKey and CurrencyKey 是用于查找 CurrencyRate 表中 AverageRate 的键。

可以使用 Exchange Rate 在本地 currency 中 calculate 销售额,

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

示例 2

在此示例中,Sales 表中定义的以下计算列使用 LOOKUPVALUE 函数从 Sales Order 表中返回通道 values。

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

但是,在这种情况下,由于 Sales OrderandSales 表之间存在关系,因此使用 RELATED 函数更高效。

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

RELATED 函数(DAX)信息函数