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 的上下文中存在多个非重复值时返回错误。 |
所有 search_columnName 和 search_value 对都匹配的行上的 result_columnName 的值。
如果没有符合所有搜索值的匹配项,则返回 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 模式下使用此函数。
在此示例中,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]
在此示例中,“销售额”表中定义的以下计算列使用 LOOKUPVALUE 函数返回来自“销售订单”表中的渠道值。
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
不过, 在这种情况下,由于“销售订单”表和“销售额”表之间存在关系,因此使用 RELATED 函数会更有效。
CHANNEL = RELATED('Sales Order'[Channel])