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

Power BI中无循环实现Left Over累计计算的DAX方案求助

解决Power BI中累计Left Over的DAX实现

核心逻辑转换

你需要的循环计算逻辑,本质等价于从第一个周期到当前周期的所有Created - Closed的累计和,因此无需依赖循环,直接通过DAX的累计求和能力即可实现。

步骤1:创建日期排序列

由于原始数据的Month是文本格式,无法按时间正确排序,先添加一个日期列用于统一排序:

Date = DATE([Year], SWITCH([Month], 
    "Jan",1, "Feb",2, "Mar",3, "Apr",4, "May",5, "Jun",6,
    "Jul",7, "Aug",8, "Sept",9, "Oct",10, "Nov",11, "Dec",12),
    1)

该列将Year和Month转换为当月第一天的标准日期,确保时间顺序准确。

步骤2:创建计算列(静态行级结果)

如果需要在数据表中直接生成每行的Left Over值,使用以下DAX公式创建计算列:

Left Over = 
VAR CurrentPeriodDate = [Date]
VAR AllPriorPeriods = FILTER('你的表名', '你的表名'[Date] <= CurrentPeriodDate)
RETURN SUMX(AllPriorPeriods, '你的表名'[Created] - '你的表名'[Closed])
  • CurrentPeriodDate:获取当前行的日期
  • AllPriorPeriods:筛选出所有早于等于当前行的周期数据
  • SUMX:计算这些周期的Created-Closed总和,即累计的Left Over

步骤3:创建度量值(动态上下文计算)

如果需要在可视化(如矩阵、图表)中根据筛选条件动态展示累计值,使用度量值:

Left Over Measure = 
VAR CurrentMaxDate = MAX('你的表名'[Date])
VAR AllPriorPeriods = FILTER(ALL('你的表名'), '你的表名'[Date] <= CurrentMaxDate)
RETURN SUMX(AllPriorPeriods, '你的表名'[Created] - '你的表名'[Closed])
  • ALL('你的表名'):忽略当前可视化的上下文筛选,确保计算从第一个周期开始的累计值
  • MAX('你的表名'[Date]):获取当前上下文的最大日期,确定累计截止周期

验证示例数据

用你提供的测试数据验证,结果完全匹配预期:

YearMonthCreatedClosedLeft Over
2018Jan1091
2019Jan201011
2019Feb251026
2019Apr403036
2019Mar301551
2020May121053
2020Jun151553
2020Jul201558
2020Sept201068
2021Feb603593
2021Apr4535103
2021May5020133
2022Oct5540148

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:35:19