You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI年度重置累计销售额:保留切片器过滤需求

Power BI年度重置累计销售额解决方案(保留所有筛选)

核心问题分析

你当前的DAX度量值使用ALL('fact_sales')清除了事实表的所有筛选,导致部门、区域等切片器失效。需要调整筛选逻辑,只控制日期范围和年度累计规则,同时保留其他维度的筛选。

前提准备

确保你的日历表(Calendar)与销售事实表(fact_sales)通过日期列(或年月列YM)建立了正确的关联关系,且日历表不能断开连接。

解决方案DAX代码

1. 基础销售额度量值(若已存在可跳过)

Sales Toys = SUM(fact_sales[SalesAmount])

2. 年度重置+近12个月累计度量值

Sales Cumulated = 
VAR MaxSelectedDate = MAX('Calendar'[Date]) -- 获取切片器选择的最后日期
VAR Start12MDate = EDATE(MaxSelectedDate, -11) -- 计算近12个月的起始日期
RETURN
CALCULATE(
    [Sales Toys],
    -- 筛选近12个月的日期范围
    DATESBETWEEN('Calendar'[Date], Start12MDate, MaxSelectedDate),
    -- 实现年度重置的累计(本年至今)
    DATESYTD('Calendar'[Date]),
    -- 保留日历表的切片器筛选,同时继承其他维度的筛选
    ALLSELECTED('Calendar')
)

适配年月(YM)格式的版本

如果你的切片器使用的是YYYYMM格式的年月列(如202508),可将代码调整为:

Sales Cumulated (YM Version) = 
VAR SelectedYM = MAX('Calendar'[YM])
VAR SelectedDate = DATE(LEFT(SelectedYM,4), RIGHT(SelectedYM,2), 1)
VAR Start12MDate = EDATE(SelectedDate, -11)
VAR Start12MYM = FORMAT(Start12MDate, "YYYYMM")
RETURN
CALCULATE(
    [Sales Toys],
    FILTER(
        ALLSELECTED('Calendar'),
        'Calendar'[YM] >= Start12MYM &&
        'Calendar'[YM] <= SelectedYM &&
        'Calendar'[Year] = SELECTEDVALUE('Calendar'[Year]) &&
        'Calendar'[YM] <= SELECTEDVALUE('Calendar'[YM])
    )
)

代码逻辑说明

  1. 近12个月范围控制:通过EDATE计算切片器所选日期的前11个月,得到近12个月的起始点,用DATESBETWEEN或筛选条件锁定数据范围。
  2. 年度重置累计:使用DATESYTD(或按年份筛选)实现自然年的累计重置,确保每年1月累计值从0开始重新计算。
  3. 保留外部筛选:ALLSELECTED('Calendar')仅调整日历表的筛选上下文,不会清除部门、区域、产品组等其他维度的筛选,保证页面其他切片器正常生效。

验证要点

  • 选择2025-08时,图表应显示2024-09至2025-08的数据,其中2025年的累计值从2025-01开始累加,2024年的9-12月显示2024年的累计值(从2024-01到对应月份)。
  • 切换部门、区域等切片器,检查累计值是否同步更新为对应维度的数据。

内容的提问来源于stack exchange,提问作者KnowNothing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:22:41