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

Power BI中如何实现本月与上月同期的MoM对比计算

解决Power BI中等期天数/周数MoM对比问题

核心前提:使用独立日期表

原公式依赖原生日期列的层级筛选,且无法灵活控制对等区间,必须先创建并使用独立日期表:

  1. 创建日期表DAX:
Date Table = CALENDARAUTO()
  1. 在Power BI「建模」选项卡中,将该表标记为「日期表」。
  2. 建立「Date Table」与「Usage details」表的日期关联(基于date列)。

方案1:对等天数MoM对比(本月前N天VS上月前N天)

使用日期切片器选择截止日期(如2月15日),自动计算本月1-15日与上月1-15日的环比:

Cost MoM (对等天数) = 
VAR CurrentPeriodEnd = MAX('Date Table'[Date])
VAR CurrentDayOfMonth = DAY(CurrentPeriodEnd)
VAR PrevMonthFirstDay = EOMONTH(CurrentPeriodEnd, -2) + 1 // 获取上月第一天
VAR PrevPeriodEnd = MIN(PrevMonthFirstDay + CurrentDayOfMonth - 1, EOMONTH(PrevMonthFirstDay, 0)) // 处理上月天数不足的情况(如2月对比1月)
VAR CurrentTotal = CALCULATE(SUM('Usage details'[costInBillingCurrency]), 'Date Table'[Date] <= CurrentPeriodEnd)
VAR PrevTotal = CALCULATE(SUM('Usage details'[costInBillingCurrency]), 'Date Table'[Date] >= PrevMonthFirstDay && 'Date Table'[Date] <= PrevPeriodEnd)
RETURN
DIVIDE(CurrentTotal - PrevTotal, PrevTotal, BLANK())

逻辑说明:

  • 取切片器选择的最后日期,提取当月已过天数
  • 匹配上月的相同天数区间(自动处理上月天数更少的边界情况)
  • 分别计算两个区间的成本总和,最后计算环比

方案2:对等周数MoM对比(本月前N周VS上月前N周)

先在日期表中添加「当月周数」计算列(按当月自然周划分,每月第1天为第1周起始):

当月周数 = 
VAR FirstDayOfMonth = EOMONTH('Date Table'[Date], -1) + 1
VAR DaysElapsed = 'Date Table'[Date] - FirstDayOfMonth
RETURN
INT(DaysElapsed / 7) + 1

再编写环比DAX:

Cost MoM (对等周数) = 
VAR CurrentMaxWeek = MAX('Date Table'[当月周数])
VAR CurrentDate = MAX('Date Table'[Date])
VAR CurrentYear = YEAR(CurrentDate)
VAR CurrentMonth = MONTH(CurrentDate)
VAR PrevYear = IF(CurrentMonth = 1, CurrentYear - 1, CurrentYear)
VAR PrevMonth = IF(CurrentMonth = 1, 12, CurrentMonth - 1)
VAR CurrentTotal = CALCULATE(SUM('Usage details'[costInBillingCurrency]), 'Date Table'[当月周数] <= CurrentMaxWeek)
VAR PrevTotal = CALCULATE(
    SUM('Usage details'[costInBillingCurrency]),
    YEAR('Date Table'[Date]) = PrevYear,
    MONTH('Date Table'[Date]) = PrevMonth,
    'Date Table'[当月周数] <= CurrentMaxWeek
)
RETURN
DIVIDE(CurrentTotal - PrevTotal, PrevTotal, BLANK())

逻辑说明:

  • 基于日期表的「当月周数」列,确定当前已过的周数
  • 匹配上月的相同周数区间
  • 计算两个区间的成本总和后得到环比

切片器使用注意事项

  • 仅使用独立日期表的日期字段创建切片器,可选择单个截止日期或日期范围
  • 不要使用原「Usage details」表的日期列,也不要直接用年份/月份切片器锁定整月,否则会破坏对等区间的计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:07:06