Power BI中筛选月份时如何计算上一年度全年销售总额?
解决Power BI中筛选月份时无法获取上一年度全年销售额的问题
问题原因
你当前的DAX公式里,DATEADD是基于当前筛选的日期区间(比如选中的1月)做年份偏移,所以只会返回去年对应月份的数据。REMOVEFILTERS(dim_date[month_name])无法覆盖DATEADD依赖当前上下文日期的限制,导致达不到预期效果。
解决方案
通过明确锁定上一年的完整日期范围,脱离当前月份筛选的上下文限制,以下是两种可靠写法:
写法一:基于年份变量筛选(直观易维护)
total_sales_last_year = VAR CurrentYear = YEAR(MAX(dim_date[formatted_date])) VAR LastYear = CurrentYear - 1 RETURN CALCULATE( SUM(fact_sale_order[sales_amount]), FILTER( ALL(dim_date), YEAR(dim_date[formatted_date]) = LastYear ) )
- 逻辑:先获取当前筛选上下文里的年份,计算出上一年后,用
FILTER(ALL(dim_date))筛选出上一年的所有日期,确保返回全年销售额。
写法二:使用全量日期的同周期上年
total_sales_last_year = CALCULATE( SUM(fact_sale_order[sales_amount]), SAMEPERIODLASTYEAR(ALL(dim_date[formatted_date])), REMOVEFILTERS(dim_date) )
- 逻辑:用
ALL(dim_date[formatted_date])获取日期表的全量日期,通过SAMEPERIODLASTYEAR定位到上一年的完整日期范围,同时移除日期表的所有筛选。
验证方法
筛选任意月份(如1月),查看该度量值是否返回上一年度全年的销售总额,而非仅对应月份的数据。
内容的提问来源于stack exchange,提问作者CLT
相关产品推荐
相关产品推荐

