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

解决Power Query透视表中上月费用DAX度量仅显示总计值的问题

解决方法及原因分析

问题根源

你写的度量之所以只有总计行能正确显示上月数据,核心问题有两个:

  1. MAX(Billing[Billing Period End Date (Month Index)])在明细行(比如某公司某月份的行)里,只会取当前行的月份索引,但原代码没清除当前行的维度筛选(比如公司),如果该公司上月没有账单数据,就会返回空值;
  2. 总计行没有维度筛选,MAX会取所有数据里的最大月份索引,减1后得到上月,所以只有这一行能出结果。

修正后的DAX代码

基础版(仅按月份汇总)

Previous Month = 
VAR CurrentMonthIndex = SELECTEDVALUE(Billing[Billing Period End Date (Month Index)])
RETURN
CALCULATE(
    SUM(Billing[Total Charges excl. Vat]),
    Billing[Billing Period End Date (Month Index)] = CurrentMonthIndex - 1,
    ALL(Billing[Billing Period End Date (Month Index)])
)

多维度版(比如透视表包含公司、部门等分组)

如果你的透视表是按「公司+月份」这类多维度分组,需要保留其他维度的筛选,改用ALLEXCEPT:

Previous Month = 
VAR CurrentMonthIndex = SELECTEDVALUE(Billing[Billing Period End Date (Month Index)])
RETURN
CALCULATE(
    SUM(Billing[Total Charges excl. Vat]),
    Billing[Billing Period End Date (Month Index)] = CurrentMonthIndex - 1,
    ALLEXCEPT(Billing, Billing[Company]) // 把Company换成你实际用的分组列
)

关键细节说明

  • SELECTEDVALUE:专门用来获取当前筛选上下文里的单值,比MAX更适合这种每行对应一个月份的场景;
  • ALL(Billing[Billing Period End Date (Month Index)]):清除当前行的月份筛选,让CALCULATE能遍历全表找到所有上月的账单数据;
  • 如果你的月份索引是跨年格式(比如202404代表2024年4月),只要索引的数值逻辑是连续的(202401-1=202312),这个代码直接就能用,不用额外调整。

内容的提问来源于stack exchange,提问作者Gordon Penman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:34:53