Power BI如何通过多筛选条件计算财年至今实际累计费用
Power BI 对应财年已实际发生费用累计值计算方法
现有逻辑问题
你当前使用的DAX代码仅做了财年范围匹配,没有排除未来日期的预估费用,会把选中财年下所有未到发生日期的预计费用一并统计,不符合仅统计今日之前实际产生费用的需求。
原问题代码:
Cum FY Invoice Total = CALCULATE('Invoice Amounts'[Invoice Total],FILTER(ALL('Calendar'),'Calendar'[Fiscal Year]=2022))
这个写法还有两个额外隐患:
- 硬编码财年值2022,无法适配报表财年切片器的动态选择
- 用
ALL('Calendar')清空了整个日历表的筛选上下文,会导致挂在日历维度上的其他筛选器(比如部门、费用类型筛选)失效
修正后DAX代码
动态适配切片器选中年份版本(推荐)
自动匹配报表中用户选中的财年,统计该财年下所有发生日期早于今日的实际费用总和:
Cum FY Actual Invoice Total = CALCULATE( 'Invoice Amounts'[Invoice Total], FILTER( ALL('Calendar'[Fiscal Year], 'Calendar'[Date]), 'Calendar'[Fiscal Year] = SELECTEDVALUE('Calendar'[Fiscal Year]) && 'Calendar'[Date] < TODAY() ) )
固定财年版本
如果需要固定统计某一个财年(比如FY2022)的实际累计值,直接把财年匹配条件写死即可:
Cum FY 2022 Actual Invoice Total = CALCULATE( 'Invoice Amounts'[Invoice Total], FILTER( ALL('Calendar'[Fiscal Year], 'Calendar'[Date]), 'Calendar'[Fiscal Year] = 2022 && 'Calendar'[Date] < TODAY() ) )
注意:如果你的费用数据存在当日入账的场景,可以把日期判断条件从
'Calendar'[Date] < TODAY()改成'Calendar'[Date] <= TODAY(),把今日产生的费用也纳入统计范围。
前置校验要求
- 确保
Calendar日期表和Invoice Amounts费用表已经基于日期字段建立了正确的一对多关系 - 建议将
Calendar表标记为Power BI正式日期表,避免时间计算逻辑异常
内容的提问来源于stack exchange,提问作者Robert Kendall
相关产品推荐
相关产品推荐

