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

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] <= 当前季度结束日期
)

代码逻辑说明

  1. 当前季度结束日期:获取当前行对应的季度结束日期(因数据按季度单条记录存储,MAX直接取该行的ClosingDate)
  2. 滚动起始日期:通过EDATE函数往前推9个月,得到当前季度往前数第3个季度的起始日期,确保覆盖连续4个季度的区间
  3. CALCULATE块:清除当前行的筛选限制,筛选日期在滚动区间内的所有Price并求和,自动适配不足4个季度的场景(如2022Q1仅计算自身,2022Q3计算Q1-Q3的总和)

补充说明

若已在模型中添加标准日期表,建议基于日期表的季度字段进行计算,只需将代码中的TestTable[ClosingDate]替换为日期表的日期字段,并确保日期表与事实表建立正确的关系,计算逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:42:47