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

Power BI中6个月滚动求和计算求助

Power BI 实现Booked列6个月滚动求和方案

嗨,我来帮你搞定这个6个月滚动求和的需求!按照你的描述,我们可以通过DAX创建计算列来实现这个功能,具体步骤和说明如下:

前提准备

首先确保你的数据表满足两个条件:

  • 存在一个日期/时间类型的列(比如截图里的月份列,假设字段名为Date),且每个月份对应唯一一行数据(从你的示例看是月度汇总数据,这点应该没问题)。
  • Booked列是数值类型,能正常求和。

创建计算列的DAX公式

打开Power BI的数据视图,找到你的数据表,点击「新建列」,输入以下DAX公式(记得把你的表名替换成实际的表名称):

6个月滚动求和 = 
VAR 当前月份 = '你的表名'[Date]
VAR 滚动起始日期 = EDATE(当前月份, -5)  // 往前推5个月,加上当前月正好覆盖6个月份范围
RETURN
CALCULATE(
    SUM('你的表名'[Booked]),
    FILTER(
        ALL('你的表名'),
        '你的表名'[Date] >= 滚动起始日期 && '你的表名'[Date] <= 当前月份
    )
)

公式说明

  • VAR用来定义临时变量,让公式更清晰:当前月份取每行对应的月份,滚动起始日期通过EDATE函数计算出当前月份往前推5个月的日期,这样日期范围就是「起始日期到当前月份」,正好6个月。
  • CALCULATE配合FILTER和ALL函数,忽略当前行的筛选上下文,对整个表中符合日期范围的Booked值求和。

验证你的示例

针对你提到的2017-06的情况:

  • 当前月份是2017-06,滚动起始日期就是EDATE(2017-06, -5)=2016-12
  • 公式会自动求和2016-12到2017-06的所有Booked值,结果就是你计算的2,797,495,完全符合预期!

可选:更灵活的度量值方案

如果你希望在可视化中能动态筛选(比如切片器选择年份),用度量值会更合适,公式如下:

6个月滚动求和(度量值) = 
VAR 当前最大日期 = MAX('你的表名'[Date])
VAR 滚动起始日期 = EDATE(当前最大日期, -5)
RETURN
CALCULATE(
    SUM('你的表名'[Booked]),
    '你的表名'[Date] >= 滚动起始日期 && '你的表名'[Date] <= 当前最大日期
)

注意事项

  • 务必替换公式中的你的表名为实际数据表的名称,不然会报错。
  • 如果你的日期列是每月最后一天,EDATE函数依然能正确计算起始日期,不影响结果。
  • 确保每个月份只有一条汇总记录,避免重复计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:04