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

Power BI中计算上月滚动总计的DAX表达式求解

搞定Power BI上月滚动总计的DAX写法

嘿,针对你已经实现当前月份滚动总计的情况,我帮你梳理两种常见场景的调整方案,直接套用就能解决需求:

场景1:筛选特定月份时,计算整个上月的滚动累计

比如你选了2024年3月,想展示2024年2月从月初到每天的滚动销售额总和,用这个DAX就行:

Rolling_Total_Last_Month = 
VAR CurrentMonthStart = MIN(SalesInvoice[Date])  -- 拿到你筛选月份的第一天
VAR LastMonthStart = DATE(YEAR(CurrentMonthStart), MONTH(CurrentMonthStart)-1, 1)  -- 上月第一天
VAR LastMonthEnd = EOMONTH(LastMonthStart, 0)  -- 上月最后一天
RETURN
CALCULATE(
    SUM(SalesInvoice[Sales]),
    FILTER(
        ALL(SalesInvoice[Date]),  -- 解锁日期列,确保能取到上月完整范围
        SalesInvoice[Date] <= MAX(SalesInvoice[Date]) - DATE(0,1,0)  -- 当前日期往回推1个月
        && SalesInvoice[Date] >= LastMonthStart
    )
)

嫌代码长?试试更简洁的版本,用时间智能函数省事儿:

Rolling_Total_Last_Month = 
VAR LastMonthFullRange = DATESBETWEEN(
    SalesInvoice[Date],
    STARTOFMONTH(DATEADD(MIN(SalesInvoice[Date]), -1, MONTH)),
    ENDOFMONTH(DATEADD(MAX(SalesInvoice[Date]), -1, MONTH))
)
RETURN
CALCULATE(
    SUM(SalesInvoice[Sales]),
    FILTER(
        ALLSELECTED(SalesInvoice[Date]),
        SalesInvoice[Date] <= MAX(LastMonthFullRange)
        && SalesInvoice[Date] >= MIN(LastMonthFullRange)
    )
)

核心逻辑

  • 用DATEADD把你当前筛选的日期直接往回挪1个月,锁定上月的完整时间范围
  • 保留你原来滚动累计的逻辑:对上月的每一天,计算从月初到这天的销售额总和

场景2:筛选任意日期范围时,计算上月同期的滚动累计

比如你选了2024年3月5日-15日,想算2024年2月5日-15日这段时间的滚动累计,就用这个:

Rolling_Total_Last_Month_Period = 
VAR SelectedStart = MIN(SalesInvoice[Date])  -- 你选的起始日期
VAR SelectedEnd = MAX(SalesInvoice[Date])  -- 你选的结束日期
VAR LastMonthStart = DATEADD(SelectedStart, -1, MONTH)  -- 上月同期起始日
VAR LastMonthEnd = DATEADD(SelectedEnd, -1, MONTH)  -- 上月同期结束日
RETURN
CALCULATE(
    SUM(SalesInvoice[Sales]),
    FILTER(
        ALL(SalesInvoice[Date]),
        SalesInvoice[Date] <= MAX(SalesInvoice[Date]) - DATE(0,1,0)
        && SalesInvoice[Date] >= LastMonthStart
        && SalesInvoice[Date] <= LastMonthEnd
    )
)

核心逻辑

  • 直接把你选中的起始、结束日期各往回推1个月,精准匹配上月同期区间
  • 滚动逻辑不变:对上月同期的每一天,计算从区间第一天到这天的销售额总和

踩坑提醒

  • 确保你的SalesInvoice[Date]是标准日期类型,别有空值或者格式不对的日期,不然函数会罢工
  • 如果你的报表用了单独的日期表,记得把DAX里的SalesInvoice[Date]换成日期表的日期列,计算会更稳定准确
  • 记得测试跨年情况哦,比如选2024年1月,上月是2023年12月,看看计算结果是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:38