Power BI中如何计算含去年全年的累计销售额?
解决Power BI中DAX度量值REMOVEFILTERS未生效的问题
问题分析
你需要实现的逻辑是:当切片器筛选2022年2月时,计算2021年全年销售额 + 2022年1-2月累计销售额。原度量值中REMOVEFILTERS(dim_date[month_name])未生效的核心原因是:
DATEADD(dim_date[formatted_date], -1, YEAR)会基于当前筛选的日期范围(2022年2月)生成上一年的对应范围(2021年2月),此时上下文仍保留着“年份=2021”的筛选;REMOVEFILTERS(dim_date[month_name])仅移除月份筛选,但如果你的切片器同时绑定了年份维度,或者日期表的筛选层级未被彻底清除,就无法正确获取上一整年的销售额。
修正后的度量值
方案一:直接定位上一年度
通过获取当前筛选的年份,直接计算上一整年的销售额,逻辑更清晰:
total_sales = VAR Current_Year = YEAR(MAX(dim_date[formatted_date])) VAR sales_last_year = CALCULATE( SUM(fact_sale_order[sales_amount]), dim_date[year] = Current_Year - 1, REMOVEFILTERS(dim_date) ) VAR sales_current_year = CALCULATE( SUM(fact_sale_order[sales_amount]), DATESYTD(dim_date[formatted_date]) ) RETURN sales_last_year + sales_current_year
方案二:清除日期上下文后偏移年份
通过ALL获取完整日期范围,再偏移年份得到上一整年:
total_sales = VAR sales_last_year = CALCULATE( SUM(fact_sale_order[sales_amount]), DATEADD(ALL(dim_date[formatted_date]), -1, YEAR), REMOVEFILTERS(dim_date) ) VAR sales_current_year = CALCULATE( SUM(fact_sale_order[sales_amount]), DATESYTD(dim_date[formatted_date]) ) RETURN sales_last_year + sales_current_year
关键说明
- 两种方案都通过
REMOVEFILTERS(dim_date)彻底清除日期表的筛选上下文,确保上一年度销售额的计算不受当前月份/日期筛选的影响; sales_current_year的DATESYTD函数会自动基于当前筛选的月份,计算当年截至该月的累计销售额,无需额外调整。
内容的提问来源于stack exchange,提问作者CLT
相关产品推荐
相关产品推荐

