使用切片器实现动态移动平均计算

标签:
教育it时评杂谈 |
分类: 数据分析 |
先看完成效果:
http://www.agileex.com/upLoad/image/20170116/14845599374280210.gif
【关于移动平均】
我们在看一组数据的趋势时,通常会使用到移动平均(Moving Average)。移动平均是一段时间内数据的平均值。以国际原油价格为例,我们取过去50天的平均值,也就是过去50天原油价格的总和除以50。到了明天,这组数据又向后推移一天,即从明天往前推移50天的平均值。把每天的移动平均值做成折线图就是移动平均线,能让我们的数据趋势变得平滑。见下图:
http://www.agileex.com/upLoad/image/20170116/14845599739205382.png
图中绿色线是国际原油价格的曲线,红色线是过去50天的移动平均线。移动平均线更加的平滑,更容易让读者快速的识别数据变化的趋势。
【计算静态移动平均】
我们准备了过去3年的国际原油价格表:
http://www.agileex.com/upLoad/image/20170116/14845600269846571.png
大家注意一点,这个价格不是每天都有的,比如在2014年1月4日和5日就没有数据。所以我们的计算不能简单用日期减去50天,需要对日期先进行一个编号处理:
http://www.agileex.com/upLoad/image/20170116/14845600584762647.png
这样我们就得到了连续的日期编号
http://www.agileex.com/upLoad/image/20170116/14845601389864699.png
*如果日期是连续的则不需要通过编号处理,直接用日期列即可。
接下来我们依据这个编号计算过去50天的平均值:
http://www.agileex.com/upLoad/image/20170116/14845601726207487.png
http://www.agileex.com/upLoad/image/20170116/14845601957536283.png
此例里我们计算了过去50天的移动平均值,接下来我们希望向模型添加一张参数表。实现由用户点击切片器来控制计算移动平均的天数。
【动态移动平均】
要想实现切片器的动态控制,我们需要把移动平均值写成度量值,而不是之前例子里写到计算列里,因为计算列里的数值不能根据切片器的选择而变化。
大概的思路,通过HASONEVALUE和VALUES来调动参数表的数值放到公式里。
我们先准备一张参数表并导入Power Pivot模型中
http://www.agileex.com/upLoad/image/20170116/14845602314022306.png
表格预置了10,30,50
三个数值,由用户选择是看过去多少天。这些数值可根据实际情况调整。
接下来是动态移动平均的公式:
http://www.agileex.com/upLoad/image/20170116/14845602643392103.png
我们生成数据透视图看看效果:
【10天的移动平均】
http://www.agileex.com/upLoad/image/20170116/14845603341801282.png
【30天的移动平均】
http://www.agileex.com/upLoad/image/20170116/14845603678145338.png
【50天的移动平均】
http://www.agileex.com/upLoad/image/20170116/14845604168778700.png
移动平均值的展现可以根据用户的切片器选择而发生变化。时间越长移动平均的曲线越平滑。
这就是我们今天的分享,更多PowerPivot和Power BI内容请关注我们在网易云课堂的视频课程“从Excel到Power BI数据分析可视化”系列课程。
*PowerPivot工坊原创文章,欢迎转载,请注明出处