如何用DAX实现降噪加权移动平均
移动平均,大家都清楚了,但是降噪,加权后再移动平均,将移动平均的能力推向了更高境界。
什么是降噪加权移动平均
对于一堆点,可以通过移动平均观察其趋势,如下:

可以看出:
- 有些点距离中间区域太远。 
- 移动平均线如果全部考虑所有点,会被拉扯。 
对此,我们希望把周围太远的点过滤掉,于是就有了:

通过调节降噪区滑杆,将实现:
- 周围外侧的点被排除。 
- 移动平均的计算仅仅考虑绿色部分的点。 
- 移动平均也更加平滑。 
实现方案
以下给出 DAX 相关计算。
最高值与最低值
MATX.Y.Max = 
MAXX( CALCULATETABLE( VALUES( 'Calendar'[Date] ) , ALL( 'Calendar'[Date] ) )  , [MATX.KPI] )
MATX.Y.Min = 
MINX( CALCULATETABLE( VALUES( 'Calendar'[Date] ) , ALL( 'Calendar'[Date] ) )  , [MATX.KPI] )
对于学习 DAX 的小伙伴,可以好好看看,这里是如何清除筛选并保留外部筛选的技巧。
降噪算法
以下给出非常重要的 DAX 点集降噪算法,如下:
MATX.KPI.By Scope = 
VAR vY = [MATX.KPI] - [MATX.Y.Min]
VAR vL = [MATX.Y.Max] - [MATX.Y.Min]
RETURN
IF( vY >= vL * MIN('Option.X'[Option.X] ) / 100 && vY <= vL * MAX('Option.X'[Option.X] ) / 100 , [MATX.KPI] )
这里的算法原理如下:
- vL 表示最高和最低之间的跨度。 
- vY 表示相对于最低值的实际距离。 
- 通过滑竿进行判断,给出一个百分比的区间,通过视觉可以直接判断是不是包括在内。 
- 如果 vY 在上述滑竿给出的范围内,则是合理有效,否则就是噪声点,进行排除。 
移动平均算法模板
以下给出移动平均的算法模板,如下:
MATX.Value = 
AVERAGEX( 
    DATESINPERIOD( 'Calendar'[Date] , MAX( 'Calendar'[Date] ) , - [Start:Option.Y.Value] , DAY ) ,
    //[MATX.KPI] //
    [MATX.KPI.By Scope] * [MATX.Weight]
)
这是标准的移动平均算法模板,其中:
- 给出了移动平均的框架。 
- 在计算环节用度量值给出实现一种委托。 
- 将移动平均的实际计算委托给实际的度量值。 
- 其中考虑了权重。 
作图技巧
也许你已经完成了上述内容的模仿和抄袭,在作图的时候,考察了你对 PowerBI 图形的理解。这里使用的技巧包括:
- 只使用了一个折线图。 
- 灵活的运用了: 
- 只显示点,不显示折线。 
- 只显示折线,不显示点。 
总结
如果你具有复杂而真实的业务数据,有很多时候是有实际干扰的,例如:活动,促销以及客户导入等操作,通过本案例的降噪加权移动平均,可以比移动平均更加巧妙地计算多个点的实际趋势。
大家可以自己动手试试了。
现在大家可以自己体验了。
在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。

特别推荐
2021-11-09
 
 特别推荐大家赶快购买以上插件↑,明天是最后一天年度最底优惠。
第一步:去官网下载。
第二步:双击安装完成,微信登录
第三步:购买且输入优惠码:BI6666
即可。然后加入刘万祥老师微信群享受学习服务。
Power BI 终极系列课程《BI真经》

BI真经 - 让数据真正成为你的力量
扫码与精英一起讨论 Power BI,验证码:data2021
点击“阅读原文”进入学习中心
↙
