为表的每行计值表达式,返回结果不为空的最后一个列值所对应的表达式的值。
语法
LASTNONBLANKVALUE ( <列名>, <表达式> )
参数 | 属性 | 描述 |
列名 | 列表达式 | |
表达式 | 沿着列逐行计算的表达式 |
返回值
标量
一个任何类型的值
备注
虽然被归为迭代函数,但与 LASTNONBLANK 不同的是,LASTNONBLANKVALUE 的第一参数不提供行上下文,<表达式>参数在筛选上下文中计值,这个筛选上下文由第一参数的当前行转换而来,由于这个转换不在<表达式>内部发生,所以此筛选上下文相当于一个外部筛选上下文,与<表达式>的所受的其他外部筛选处于同一级别。
2024 年 2 月版本的 Power BI Desktop 中此函数在某些场景下的计算结果发生了变化,具体原因暂不明确,如果你也遇到类似问题,可以先参考上面的解释
<列名>参数可以是以下任一项 :
- 对列的引用。只有在这种情况下才应用上下文转换,因为列引用被替换为
CALCULATETABLE ( DISTINCT ( <列名> ) )
- 返回单列的表表达式
- 定义单列的布尔表达式
尽管 LASTNONBLANKVALUE 通常用于日期,但它也可以应用于任何数据类型的列。
LASTNONBLANKVALUE 等价于下面的表达式:
CALCULATE ( <Expression>, LASTNONBLANK ( <ColumnName>, CALCULATE ( <Expression> ) ) )
LASTNONBLANKVALUE 未针对 DirectQuery 进行优化,在计算列和行级别安全性公式中完全不受支持。 但可以在度量值和查询公式中使用,只不过无法保证性能。
LASTNONBLANKVALUE 的内在行为类似 SUMMARIZECOLUMNS,在嵌套使用的情景下(比如作为迭代函数的第二参数)可能会得到异常结果,未来的这种值行为可能会发生变化,建议你尽量避免嵌套使用。
示例
以下公式返回销售额不为空的最后一个地区经理的销售额:
= LASTNONBLANKVALUE('Table'[地区经理],CALCULATE(SUM('Table'[销售额])))
详细了解 LASTNONBLANKVALUE 的行为,请参考扩展阅读:
- MSDN 文档:LASTNONBLANKVALUE
- DAX Guide:LASTNONBLANKVALUE
说点什么