Power BI DAX 累计求和适配账户切片器筛选异常问题求助
问题成因
你调整后的公式出错的核心原因是:ALL('Transaction')清除了整张交易表的所有筛选上下文后,VALUES('Transaction'[Account])取到的是当前可视化行对应日期下有交易记录的账户列表,而非切片器选中的全量账户列表。
以你遇到的场景为例:26号仅主账户有交易,在26号对应的可视化行中,VALUES('Transaction'[Account])返回结果只有「主账户」,FILTER条件会把所有历史日期里次账户的交易全部排除出累计范围,最终得到的合计值自然低于预期。
修复方案
最简洁的修复逻辑是:仅清除日期维度的筛选上下文,保留账户维度的切片器筛选效果,不需要额外新增账户判断条件,修复后的度量值公式如下:
CALCULATE( SUM('Transaction'[Amount]), FILTER( ALL('Transaction'[Date]), 'Transaction'[Date] <= MAX('Transaction'[Date]) ) )
逻辑说明
ALL('Transaction'[Date])仅清除日期列的筛选,不会影响账户维度的筛选上下文,切片器的账户选择会自然生效- 选中单个账户时,筛选上下文已经过滤出该账户的所有交易,累计值仅计算该账户的历史交易总和
- 全选账户时,账户维度没有额外筛选,累计值会计算所有账户的历史交易总和,不受当日是否有部分账户交易的影响
如果你的业务场景还有其他需要保留的筛选维度(比如交易类型、地区等),也可以用ALLEXCEPT指定保留的筛选列,示例如下:
CALCULATE( SUM('Transaction'[Amount]), FILTER( ALLEXCEPT('Transaction', 'Transaction'[Account], 'Transaction'[Trade Type]), 'Transaction'[Date] <= MAX('Transaction'[Date]) ) )
内容的提问来源于stack exchange,提问作者the.scrimpton
相关产品推荐
相关产品推荐

