You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:32:45