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

PowerBI中如何在SUMMARIZE生成的表中计算上月差值

在PowerBI的SUMMARIZE汇总表中添加月度差值列

你可以直接在原有的SUMMARIZE表达式中添加计算月度差值的列,核心是利用DAX的时间智能函数获取上月总额,再与当月做差。以下是具体实现方案:

基础版(单年份月度数据)

如果你的数据仅涉及单一年份,使用以下DAX代码即可:

items_facturation_history_totals = 
SUMMARIZE(
    items_facturation_join,
    Calendar[Month Number], -- 用于保证月份按时间顺序排列,可视化时可隐藏
    Calendar[Month Name],
    "Total Prize", SUM(items_facturation_join[invoiced]),
    "MoM Difference", 
        VAR CurrentTotal = SUM(items_facturation_join[invoiced])
        -- 获取上月的 invoiced 总额
        VAR PreviousTotal = CALCULATE(
            SUM(items_facturation_join[invoiced]),
            DATEADD(Calendar[Date], -1, MONTH)
        )
        RETURN CurrentTotal - PreviousTotal
)

多年份适配版

如果数据包含多个年份,需要将年份加入分组条件,避免不同年份的同月数据被合并,同时保证跨年的月度差值计算正确:

items_facturation_history_totals = 
SUMMARIZE(
    items_facturation_join,
    Calendar[Year],
    Calendar[Month Number],
    Calendar[Month Name],
    "Total Prize", SUM(items_facturation_join[invoiced]),
    "MoM Difference", 
        VAR CurrentTotal = SUM(items_facturation_join[invoiced])
        VAR PreviousTotal = CALCULATE(
            SUM(items_facturation_join[invoiced]),
            DATEADD(Calendar[Date], -1, MONTH)
        )
        RETURN CurrentTotal - PreviousTotal
)

关键说明

  • Calendar[Month Number]是必须的:仅按Month Name排序会出现10月排在1月之前的问题,加入月份序号后可保证时间顺序,后续在报表可视化中隐藏该列即可。
  • 时间智能函数依赖正确的日期表:需确保你的Calendar表已在PowerBI中标记为日期表(右键表 → 标记为日期表),否则DATEADD等函数无法正常工作。
  • 首月差值处理:第一个月因无上月数据,差值会显示为空白,若要转为0,可修改RETURN部分为IF(ISBLANK(PreviousTotal), 0, CurrentTotal - PreviousTotal)。

内容的提问来源于stack exchange,提问作者Víctor Martín

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:35:18