计算过去一段时间的销售额

之前我们有推送过计算过去一段时间数的文章,介绍了一个时间智能函数。我们都知道运用时间智能函数需要有完整的日期表,那么如果在没有连续日期的情景下,例如数据只具体到月份的数据时,我们应该如何计算过去某段时间的值呢?

今天的这篇文章,我们就来介绍在没有连续日期,无法使用时间智能函数的情况下,应该如何解决这个问题。

先是我们的源数据,我们主要讨论销售场景,数据包括订单编号,下单月份,产品,金额和客户:

file

我们要实现的是:在某个具体的月份计算出该月份之前几个月的销售额之和,例如我们在每天展示过去前三个月不包括当月的销售额之和。具体的例子就是需要在2015年7月的时间点显示6月、5月、4月的销售额之和,依此每月都要显示过去三个月的销售额之和。

问题的难点在于要去掉图表上的时间对数据的筛选,同时还要保证动态的求和,计算的都是每天的前三个月。

首先我们能想到的是肯定要用CALCULATE来实现,那我们先来写一个:

file

然后需要做的就是清除掉图表上的时间对计算时的筛选,我们首先能想到的就是ALL函数:

file

使用ALL函数,使整张销售记录表都可以不被图表上的时间所筛选,随后我们就要写来动态限制计算销售额范围的时间了,我们要实现的是取出一个日期,选择小于它,同时还要大于等于它减3个月。理清这个逻辑,我们就可以写公式啦!
在写公式之前,我们需要准备一个可以用来计算时间的序号,从2014年开始每月递增的序号,写法如下:

Mark = 
(LEFT('calendar'[月],4)-2014)*12+RIGHT('calendar'[月],2)

我们的时间表就包括以下两列:

file

然后就可以开始写公式啦:

file

来验证一下:

file

公式里为什么会出现MAX?关于这点,我们使用MAX函数的目的是为了选择出来“一个月份”,这一个MAX的月份在实际我们画图的时候,就是时间轴上的那一个时间。在这里除了可以使用MAX函数来实现这个效果,我们还可以使用MIN函取最小值。这里的“最大值”和“最小值”,其实指的都是同一个月。

MAX = MAX('calendar'[Date])
MIN = MIN('calendar'[Date])

file

那么如果在刚才的公式里,我们使用的是MIN而不是MAX,结果会有什么不一样呢?

file

我们可以看到两个公式对应的每天的数据都是一致的,区别在于最后的总计。

使用MIN公式的总计值是当前所选时间范围最小的2015年4月的过去三个月的销售额之和,而使用MAX公式的总计值是当前所选时间范围最大的2015年7月的过去三个月的销售额之和。

掌握这个计算逻辑之后,你有没有想到哪些适用场景呢?欢迎后台踊跃发言~

file



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊