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
相关产品推荐
相关产品推荐

