Power BI中基于滚动四个季度的12个月价格求和计算问题
Power BI滚动4季度价格总和计算问题解决
问题背景
- 测试数据集包含
ClosingDate(季度结束日期)和Price字段,按季度记录数据 - 需求:实现滚动4季度价格总和——每个季度对应的结果为当前季度及过去3个季度的Price总和;若不足4个季度(如前3个季度),则取已有所有季度的总和
- 现有DAX代码仅能显示最后一个季度的滚动总和,无法实现每个季度对应自身区间的累计计算
现有问题代码
Test_12RM = var _selecteddate = MAXX(ALLSELECTED(TestTable), [ClosingDate]) return if( ISFILTERED(TestTable[ClosingDate].[QuarterNo]), CALCULATE( sum(TestTable[Price]), DATESINPERIOD(TestTable[ClosingDate], _selecteddate,-4, QUARTER)), SUMX(ALLSELECTED(TestTable), [Price]) )
问题原因
代码中_selecteddate取的是所有选中日期的最大值,导致无论当前行是哪个季度,都只会计算最后一个季度往前4个季度的总和,而非当前行季度对应的滚动区间。
解决方案代码
滚动4季度价格总和 = VAR 当前季度结束日期 = MAX(TestTable[ClosingDate]) VAR 滚动起始日期 = EDATE(当前季度结束日期, -9) // 往前推9个月,对应3个季度 RETURN CALCULATE( SUM(TestTable[Price]), ALL(TestTable), TestTable[ClosingDate] >= 滚动起始日期, TestTable[ClosingDate] <= 当前季度结束日期 )
代码逻辑说明
当前季度结束日期:获取当前行对应的季度结束日期(因数据按季度单条记录存储,MAX直接取该行的ClosingDate)滚动起始日期:通过EDATE函数往前推9个月,得到当前季度往前数第3个季度的起始日期,确保覆盖连续4个季度的区间CALCULATE块:清除当前行的筛选限制,筛选日期在滚动区间内的所有Price并求和,自动适配不足4个季度的场景(如2022Q1仅计算自身,2022Q3计算Q1-Q3的总和)
补充说明
若已在模型中添加标准日期表,建议基于日期表的季度字段进行计算,只需将代码中的TestTable[ClosingDate]替换为日期表的日期字段,并确保日期表与事实表建立正确的关系,计算逻辑保持一致。
内容的提问来源于stack exchange,提问作者minnie
相关产品推荐
相关产品推荐

