前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2.20 PowerBI数据建模-移动平均

2.20 PowerBI数据建模-移动平均

原创
作者头像
PowerBI自己学_轻松
发布2025-02-24 19:58:14
发布2025-02-24 19:58:14
1310
举报
文章被收录于专栏:PowerBI入门100例PowerBI入门100例

加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。

移动平均,又名滑动平均、滚动平均,英文名有Moving Average、Running Average、Rolling Average。它属于时间相关分析,是指在时间序列的每个节点上,计算某个指标在该节点最近N个周期的平均值,通过平均值消除数据在较小周期上的较大波动,从而展示出较为平滑的长期趋势。

按照平均值的不同算法,移动平均可以分为简单移动平均、加权移动平均、指数移动平均等,最常见的是使用算数平均值计算的简单移动平均。

时间跨度(周期数N)越长,趋势越平滑,但滞后性的劣势影响也越大,导致缺乏敏感性,所以选择合适的时间跨度很重要。

解决方案

简单移动平均是指时间节点最近的周期数个周期的指标之和/周期数,需要如下几个参数:

1 指标,如销量、购买客户数、价格;

2 周期,日、月、年;

3 周期数,向前滚动的周期数。

计算过程中,开始端的时间节点如果数据不满足周期数,返回空值;结束端后面的时间节点,也应返回空值;中间的时间节点如果指标有空值,按0计算。

举例

有2021年9月到2022年7月的销售数据(2022年6月无销售数据),计算滚动3个月的移动平均。

R3M Average =

VAR _vm_N = 3

VAR _vt_Period =

DATESINPERIOD(

'Dim_Date'[Date],

MAX('Dim_Date'[Date]),

-_vm_N,

MONTH

)

VAR _vm_MinSalesDate = MINX(ALL('Fact_Sales'[日期]),[日期])

VAR _vm_MaxSalesDate = MAXX(ALL('Fact_Sales'[日期]),[日期])

VAR _SelectedTimePoint = SELECTEDVALUE('Dim_Date'[YearMonth])

VAR _vm_MinTimePoint =

CALCULATE(VALUES('Dim_Date'[YearMonth]),

FILTER(ALL('Dim_Date'), 'Dim_Date'[Date] = DATE(YEAR(_vm_MinSalesDate), MONTH(_vm_MinSalesDate)+_vm_N-1, DAY(_vm_MinSalesDate)))

)

VAR _vm_MaxTimePoint =

CALCULATE(VALUES('Dim_Date'[YearMonth]),

FILTER(ALL('Dim_Date'), 'Dim_Date'[Date] = _vm_MaxSalesDate)

)

VAR

_vm_R_N_Total =

IF(HASONEVALUE('Dim_Date'[YearMonth]) && _SelectedTimePoint>=_vm_MinTimePoint && _SelectedTimePoint<=_vm_MaxTimePoint,

SUMX(

_vt_Period,

[销量]+0

)

)

RETURN

_vm_R_N_Total/_vm_N

如果周期是日或年,把_vt_Period 中DATESINPERIOD的参数MONTH替换为DAY或YEAR,把最小时间节点中的月份移动MONTH(_vm_MinSalesDate)+_vm_N-1变为日或年的移动,以及用到年月字段'Dim_Date'[YearMonth]的地方换为日或年字段。

拓展

1 新建参数,将公式中的_vm_N=参数值,可实现动态设置N个周期的移动平均。

2 窗口函数等也可以用来计算移动平均,以滚动N个周期年周的移动平均的Period为例。

VAR _vt_Period =

WINDOW(1-_vm_N,REL,0,REL,

ALL('Dim_Date'[YearWeek]),

ORDERBY('Dim_Date'[YearWeek],ASC),,,MATCHBY('Dim_Date'[YearWeek])

)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档