如何解决PowerBI中获取指定度量值最后值的查询问题?
问题描述
我在处理数据表时遇到了问题:当前CurrentIndex列算出的结果是1.0314,但我实际需要获取度量值cummRateIndexCol的最后一个值(也就是1.4634)。我试了两个DAX表达式,都没达到预期:
第一个表达式直接报错,原因是cummRateIndexCol是度量值不是列:
currentIndex = MAXX ( FILTER ( ALLSELECTED ( 'Year Rank' ), 'Year Rank'[Year] = 2023 ), 'Year Rank'[CummRateIndexCol] )
第二个表达式也没得到正确结果:
currentIndex2 = CALCULATE ( MAX ( 'Year Rank'[CummRateIndexCol] ), FILTER ( 'Year Rank', 'Year Rank'[Year] = MAX ( 'Year Rank'[Year] ) ) )
解决办法
因为cummRateIndexCol是度量值,不能像普通列那样直接在表函数里引用,得通过调整筛选上下文来获取最后一行的度量值结果,给你两种可行的写法:
写法1:针对最大年份的最后一行
如果最后一行对应数据里的最大年份(比如示例里的2023),可以先锁定年份,再定位到该年份的最后一行:
currentIndex = VAR MaxYear = MAX('Year Rank'[Year]) RETURN CALCULATE( [cummRateIndexCol], FILTER( ALLSELECTED('Year Rank'), 'Year Rank'[Year] = MaxYear && 'Year Rank'[Rank] = MAX('Year Rank'[Rank]) // 这里的Rank是用来排序的列,换成你实际的排序字段(比如月份、序号) ) )
写法2:取整个筛选范围内的最后一行
如果需要的是当前可视化范围内的最后一行(不管年份),用TOPN直接定位最后一行的上下文:
currentIndex = VAR LastRow = TOPN( 1, ALLSELECTED('Year Rank'), 'Year Rank'[Year], DESC, 'Year Rank'[Rank], DESC // 按年份和排序字段降序,取最后一行 ) RETURN CALCULATE( [cummRateIndexCol], LastRow )
关键点说明
- 度量值的结果依赖当前筛选上下文,所以必须先精准定位到最后一行的筛选条件,再在这个上下文里计算
[cummRateIndexCol]。 - 记得把示例里的
'Year Rank'[Rank]换成你数据表中实际用来排序的列,确保能准确找到最后一行。
内容的提问来源于stack exchange,提问作者user27058554
相关产品推荐
相关产品推荐

