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

Power BI中跨多年同月份的滚动平均计算方法问询

Power BI 跨年度同月份滚动平均实现方案

一、使用度量值实现(推荐,支持动态上下文)

这种方式适合在矩阵、卡片图等可视化组件中动态展示,无需提前计算固定表格。

前提条件

确保你已创建标准日期表,并与包含总计数值的事实表通过日期字段建立关系。日期表需包含日期、年份、月份(数字或统一格式文本)字段。

DAX度量值代码

同月份滚动5年平均 = 
VAR 当前月份 = MONTH(MAX('日期表'[日期]))
VAR 当前年份 = YEAR(MAX('日期表'[日期]))
-- 筛选过去5年(含当前年)的同月份日期范围
VAR 目标日期范围 = 
    FILTER(
        ALL('日期表'),
        MONTH('日期表'[日期]) = 当前月份 &&
        YEAR('日期表'[日期]) >= 当前年份 - 4 &&
        YEAR('日期表'[日期]) <= 当前年份
    )
-- 计算筛选范围内各年份同月份的总计数值的平均值
RETURN
    AVERAGEX(目标日期范围, CALCULATE(SUM('事实表'[总计数值])))

代码说明

  • 当前月份/当前年份:从当前可视化上下文(比如选中的年份、月份)提取对应值
  • 目标日期范围:筛选出近5年中与当前月份相同的所有日期
  • AVERAGEX:遍历筛选出的每个年份,计算对应月份的总计数值,再取平均值

调整滚动年限

若需要改为3年滚动平均,只需将当前年份 - 4改为当前年份 - 2(包含当前年在内共3年)。


二、使用计算表格实现(静态数据,适合批量分析)

如果需要生成一份固定的同月份平均数据表格用于后续分析,可创建计算表:

DAX计算表代码

同月份滚动平均汇总表 = 
ADDCOLUMNS(
    -- 先按年份、月份分组
    SUMMARIZE('日期表', '日期表'[年份], '日期表'[月份]),
    "5年同月份平均", 
    VAR 当前月份 = '日期表'[月份]
    VAR 当前年份 = '日期表'[年份]
    VAR 目标日期范围 = 
        FILTER(
            ALL('日期表'),
            '日期表'[月份] = 当前月份 &&
            '日期表'[年份] >= 当前年份 - 4 &&
            '日期表'[年份] <= 当前年份
        )
    RETURN
        AVERAGEX(目标日期范围, CALCULATE(SUM('事实表'[总计数值])))
)

说明

该计算表会生成包含年份、月份、5年同月份平均三列的静态表格,后续可直接用于报表或进一步处理。


注意事项

  1. 若部分年份的对应月份无数据,AVERAGEX会自动忽略空值,仅计算有数据的年份平均值;若需强制包含所有年份(空值按0计算),可将SUM('事实表'[总计数值])改为COALESCE(SUM('事实表'[总计数值]), 0)。
  2. 日期表的月份字段需保持格式统一,避免因文本格式不一致(如"1月"和"01月")导致匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:52