在实际销售中,经常能遇到中国式老板的需求。比如说,我有一份最近的销售清单。
BOSS:我要看最近这5天的销售额平均值!
白茶:没问题,EASY!
BOSS:我还要看最近7天的!
白茶:OK,没问题!
BOSS:我还要你给我预测一下咱的销售趋势!
白茶:…(内心无数次想掀翻桌子)好。
这就是实际的情况,为了应对烦不胜烦的平均需求,我们该怎样进行呢?
这是一份案例数据,连续的,日期没有中断的。将其导入PowerBI中。
看到这里,有的小伙伴会问了,那我日期要是不连续的该怎么进行呢?这个过一段时间白茶会继续讲解,咱先来了解基础。
(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)
结果如图:
老规矩,建立日期表,建立模型关系,这里就不赘述了。现将原始数据放入折线图中查看。结果如下:
这就是我们需要处理的数据。前期准备工作完成,咱来看看涉及到的知识点。
AVERAGEX函数:
语法=
AVERAGEX(<table>,<expression>)
第一参数是一个表,第二参数是这个表对应每一行的值,可以是表达式,但是结果必须是标量值。
需要注意的是,这是一个迭代函数,会对表中的数据逐行计算。
DATESINPERIOD函数:
语法=
DATESINPERIOD(<dates>,<start_date>,<number_of_intervals>,<interval>)
返回的结果是一段时间。
第一参数是一组日期列;
第二参数代表开始的日期;
第三参数代表移动的间隔;
第四参数代表移动单位,可以是DAY、MONTH、QUARTER、YEAR。
涉及到的相关知识介绍完毕,编写如下代码:
基础代码:
销售 =
SUM ( '示例'[销售金额] )
移动平均代码:
移动平均 =
AVERAGEX ( DATESINPERIOD ( '日期表'[Date], MAX ( '日期表'[Date] ), -7, DAY ), [销售] )
放入折线图中进行对比:
这样的话就求出来7天的移动平均值了。
这里解释一下代码含义:
DATESINPERIOD函数在这里是选定最新日期,向前移动7天。每7天算作一组。
**[销售]**是为每组时间段匹配相关计算值。
AVERAGEX函数求出每组**[销售]**的算数平均值。
但是有的小伙伴就会说了,白茶,你不是说移动么?移动结果呢?
别急,还没结束,咱们继续。
在建模窗口视图下添加“参数”,填写自己的数据参数,点击确定。
修改刚才的公式如下:
移动平均2 =
AVERAGEX (
DATESINPERIOD ( '日期表'[Date], MAX ( '日期表'[Date] ), - [移动平均 值], DAY ),
[销售]
)
放在折线图中对比,结果如图:
图中黄线是之前写的代码;红线是移动平均。
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球[PowerBI丨需求圈])
这里是白茶,一个PowerBI的初学者。
下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。