Power BI中DAX累计求和无法按期限桶筛选的问题
Power BI中按期限桶(Tenor)拆分计算累计余额的DAX解决方案
问题说明
创建的累计求和度量值无法按表格内的**期限桶(Tenor)**拆分计算,使用FILTER/ALL调整筛选时要么结果无变化,要么报错,需要实现每个Tenor分组下单独计算余额累计。
模拟数据
| 日期 | 期限桶(Tenor) | 余额(Balance) |
|---|---|---|
| December 2022 | 18m | 0.196072326627487 |
| December 2022 | 2y | 0.149643186475954 |
| December 2022 | 3y | 0.180522608363889 |
| December 2022 | 4y | 0.780540306321475 |
| December 2022 | 5y | 0.156029893270158 |
| January 2022 | 18m | 0.512496934496972 |
| January 2023 | 2y | 0.068123785829084 |
| January 2023 | 3y | 0.349971677118287 |
正确DAX度量值
将表名替换为你的实际数据表名称:
累计余额 = VAR 当前日期 = MAX('表名'[日期]) VAR 当前期限桶 = SELECTEDVALUE('表名'[期限桶(Tenor)]) RETURN CALCULATE( SUM('表名'[余额(Balance)]), FILTER( ALLSELECTED('表名'), '表名'[期限桶(Tenor)] = 当前期限桶 && '表名'[日期] <= 当前日期 ) )
关键逻辑说明
- 保留期限桶上下文:通过
当前期限桶 = SELECTEDVALUE('表名'[期限桶(Tenor)])获取当前行的Tenor分组,确保累计计算仅针对同一Tenor的数据。 - 控制筛选范围:
ALLSELECTED('表名')保留报表中已有的全局/页面级筛选,但清除当前行的日期和Tenor上下文,再通过FILTER限定两个条件:- 数据的Tenor与当前行一致
- 数据的日期小于等于当前行日期
- 日期格式兼容:如果你的日期列是文本类型,需将
MAX('表名'[日期])替换为MAX(DATEVALUE('表名'[日期])),确保日期比较逻辑正确。
常见问题排查
- 若之前用
ALL('表名'),会清除所有筛选(包括Tenor),导致累计结果为全局总和,无法按Tenor拆分。 - 若FILTER中未关联
当前期限桶,则筛选逻辑未限定Tenor分组,结果自然不会按Tenor拆分。
内容的提问来源于stack exchange,提问作者Kris P
相关产品推荐
相关产品推荐

