从表中检索满足所有匹配条件的值。
语法
LOOKUPVALUE ( <结果列>, <查找列>, <查找值>, [<查找列>, <查找值> … ], [<备选结果>] )
参数 | 属性 | 描述 |
结果列 | 要返回的值所在的列名。列必须使用标准 DAX 语法命名,通常是完全限定的,不支持表达式。 | |
查找列 | 可重复 | 在与结果列相同的表中或扩展表中,执行查找的现有列的名称,查找列使用完全限定名。不支持表达式 |
查找值 | 可重复 | 标量表达式(不引用正在搜索的同一表中的任何列) |
备选结果 | 可选 | 当第一参数结果为空或多个不重复值时的替代结果,如果省略此参数,为空时返回 BLANK,匹配多值时返回错误 |
返回值
标量
一个任意类型的值
备注
- 如果没有满足所有搜索值的匹配项,则返回空值或<备选结果>(如果提供) 。 换句话说,如果仅部分条件匹配,则该函数将不会返回查找值
- 如果有多行匹配搜索值,并且在所有情况下结果列的值都相同,那么 LOOKUPVALUE 返回该值 。 但是,如果结果列返回不同的值,则函数返回错误或备选结果(如果提供)
- 查找列可以使用结果列所在表的扩展表中的任何列
- LOOKUPVALUE 忽略任何筛选上下文
当不可能使用 RELATED 利用数据模型中的现有关系获取数据时,才可以考虑使用 LOOKUPVALUE,因为 RELATED 更快。正因如此,LOOKUPVALUE 通常用于无关系数据的获取,此时 TREATAS 也是不错的选择,而且某些某些情况下性能可能好于 LOOKUPVALUE。
示例
搜索同一表中包含的给定日期和货币的汇率:
LOOKUPVALUE ( ExchangeRates[Rate], ExchangeRates[Date], DATE ( 2018, 4, 15 ), ExchangeRates[Currency], "EUR" )
扩展阅读:
- MSDN 文档:LOOKUPVALUE
- DAX Guide:LOOKUPVALUE
说点什么