一、移动平均
移动平均,是一种常用的统计分析方法,它是指将一定时间范围内的数据,按一定的时间间间隔进行计算平均,然后将平均值形成一条折线。常用的时间间隔有10天、20天、30天、60天等。
当原数据折线图波动比较大时,通过移动平均可以使折线图变得趋于平缓,更有利于发现变化趋势。
二、问题描述
已知2022年7月1日至2022年12月31日日销售金额和需求计算的不同偏移量,见下表。
表:销售记录
表:偏移量
问题:在Power BI中计算不同偏移量下的移动平均值
三、分析
有关移动平均值的计算,这里我们分成两种情况呈现,一种是在Power BI数据模式下,通过新建列来计算移动平均值;二种是Power BI报表模式下,通过新建度量值来计算移动平均值。
(一)Power BI数据模式下,通过新建列来计算移动平均值
新建列,10日移动平均值1 = AVERAGEX(FILTER(ALL('销售记录'),'销售记录'[日期]<=EARLIER('销售记录'[日期]) && '销售记录'[日期]>EARLIER('销售记录'[日期])-10),'销售记录'[销售金额])
上图中7月1日~7月9日也显示了平均值,习惯做法由于7月1日~7月9日不满10天,应显示为空,所以对对上面的公式进行如下优化:
新建列,10日移动平均值2 = AVERAGEX(FILTER(ALL('销售记录'),'销售记录'[日期]<=EARLIER('销售记录'[日期]) && '销售记录'[日期]>EARLIER('销售记录'[日期])-10 && EARLIER('销售记录'[日期])>=MIN('销售记录'[日期])+9),'销售记录'[销售金额])
通过筛选条件EARLIER('销售记录'[日期])>=MIN('销售记录'[日期])+9),将前9天筛选掉。
(二)Power BI报表模式下,通过新建度量值来计算移动平均值
1、静态移动平均
新建度量值,10日移动平均 = CALCULATE(AVERAGE('销售记录'[销售金额]),FILTER(ALL('销售记录'),'销售记录'[日期]<=SELECTEDVALUE('销售记录'[日期]) && '销售记录'[日期]>SELECTEDVALUE('销售记录'[日期])-10 && SELECTEDVALUE('销售记录'[日期])>=MINX(ALL('销售记录'),'销售记录'[日期])+9))
2、动态移动平均
新建度量值,移动平均 = CALCULATE(AVERAGE('销售记录'[销售金额]),FILTER(ALL('销售记录'),'销售记录'[日期]<=SELECTEDVALUE('销售记录'[日期]) && '销售记录'[日期]>SELECTEDVALUE('销售记录'[日期])-SELECTEDVALUE('偏移量'[移动平均天数]) && SELECTEDVALUE('销售记录'[日期])>=MINX(ALL('销售记录'),'销售记录'[日期])+SELECTEDVALUE('偏移量'[移动平均天数])-1))
注意:
(1)新建度量值时用的是SELECTEDVALUE('销售记录'[日期]),而新建列时用的是EARLIER('销售记录'[日期])
(2)通过SELECTEDVALUE('偏移量'[移动平均天数]),与切片器“移动平均天数”动态关联,实现动态移动平均