Power BI中按列计算纵向累计值(Running Total)的问题
群组付款流入矩阵累计值计算问题排查与解决
原公式失效的核心问题
- 过度清除筛选上下文:原公式中的
ALL(table)会清除所有筛选(包括行维度的群组创建日期、产品类型等),导致累计值计算时忽略当前行的群组和产品维度,结果不符合预期。 - 日期上下文混淆:矩阵行是群组创建日期、列是付款创建日期,原公式未明确指定
MAX([date])对应的是付款日期,Power BI可能错误取到群组日期,导致累计逻辑错误。
修正后的DAX公式
场景1:使用数据表自带的日期字段
累计付款金额 = CALCULATE( SUM('你的表名'[付款金额字段]), -- 仅清除付款日期的筛选,保留群组、产品类型等其他维度的筛选 ALLSELECTED('你的表名'[付款创建日期]), '你的表名'[付款创建日期] <= MAX('你的表名'[付款创建日期]) )
场景2:使用独立日期表(推荐)
如果模型中存在关联的独立日期表,用以下公式更稳定:
累计付款金额 = CALCULATE( SUM('你的表名'[付款金额字段]), ALLSELECTED('日期表'[日期]), '日期表'[日期] <= MAX('日期表'[日期]), -- 强制保留当前行的群组和产品类型筛选 VALUES('你的表名'[群组创建日期]), VALUES('你的表名'[产品类型]) )
关键注意事项
- 确保模型关系正确:如果使用独立日期表,需将数据表的
群组创建日期和付款创建日期分别与日期表的日期字段建立关联; - 矩阵字段配置:行选择格式化后的群组创建日期,列选择付款创建日期,保证上下文维度匹配;
- 分步验证:先移除产品类型等筛选,验证累计值是否正确,再逐步添加筛选维度排查问题。
内容的提问来源于stack exchange,提问作者eponkratova
相关产品推荐
相关产品推荐

