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

Power BI累计总额计算问题:ALL筛选器与日期列格式的作用

DAX累计金额度量值两类异常问题解析

背景:我创建了柱状图,X轴显示月份,Y轴为月末累计金额达标人数(要求数值随时间单调递增),以下解析两类已解决但原因不明的问题:

问题1:ALL仅筛选日期列时返回当月金额而非累计

错误度量值代码:

Criteria = CALCULATE(ROUND(SUM('Table Amount'[Amount]),0), FILTER(ALL('Table Amount'[Date]), 'Table Amount'[Date] <= MAX('Table Amount'[Date])))

原因:ALL('Table Amount'[Date])仅清除了日期列的筛选上下文,但柱状图X轴的月份筛选(来自Dateinchart)仍会作用在表的其他维度(比如人员列)上。FILTER迭代的是独立的日期值,而CALCULATE内部保留了当前月份对人员的筛选,导致计算范围被限制在当月的人员数据内,自然只能得到当月金额,而非累计到当月的总额。只有清除整个表的筛选上下文(ALL('Table Amount')),才能让FILTER遍历所有日期和人员数据,正确计算累计值。

问题2:使用日期层级[Month]组件时所有月份显示最终累计值

错误度量值代码:

Criteria = CALCULATE(ROUND(SUM('Table Amount'[Amount]),0), FILTER(ALL('Table Amount'), 'Table Amount'[Date].[Month] <= MAX('Table Amount'[Date].[Month])))

原因:[Date].[Month]仅提取日期的月份数字(1-12),不包含年份信息。当用该组件做筛选时,条件<= MAX('Table Amount'[Date].[Month])会包含所有年份中月份数字≤当前值的记录,比如当前月份是10月,会把往年1-10月的数据都算进来。另外,X轴每个月份对应的MAX('Table Amount'[Date].[Month])是自身的月份数字,结合ALL('Table Amount')清除表筛选后,实际计算的是所有月份数字≤当前月份的总和,最终所有月份都会显示截至最大月份的累计总额,而非对应月份的累计值。

可行度量值说明

正确的累计金额度量值:

Criteria = CALCULATE(ROUND(SUM('Table Amount'[Amount]),0), FILTER(ALL('Table Amount'), 'Table Amount'[Date] <= MAX('Table Amount'[Date])))

该版本通过ALL('Table Amount')清除整个表的筛选上下文,FILTER遍历表中所有行,筛选出日期≤当前月份最后一天的所有数据,从而准确计算截至当月的累计金额,保证Y轴数值随时间单调递增。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:28:12