经常在Tableau交流群里看到,有新学习Tableau的朋友纠结于日、周、月、年的同比和环比的计算,觉得可以分享一点经验,就来聊聊通过指定的日期来计算日、周、月、年的同比环比在Tableau里的实现方法。(以下示例采用Tableau Desktop 2020.4实现)
首先打开Tableau Desktop,加载”示例-超市”数据源中的”订单”表。通常,新学习Tableau的朋友在各种教程里,看到的环比的的实现方式,以月环比为例,就是把”订单日期”字段拖到”列”改成月,然后把度量(比如”销售额”)放到文本或者行,然后在胶囊的右键菜单上选择”快速表计算”->”百分比差异”,如图:
我们可以通过新建一个计算字段,然后把这个应用了快速表计算的胶囊拖入编辑框,来看看是怎么实现的:
从公式中我们可以看到,这个计算是通过Lookup定位取数的方式,来获取上期数值的,但这里存在两个问题,首先是图表中的第一个月,没有环比结果,其次是如果我们想指定日期,比如2020年10月,当我们把日期字段放到筛选器,选择2020年10月时,我们什么都无法得到,如图:
因为,筛选器过滤掉了除2020年10月之外的数据,当然也包括2020年9月,在没有数据的情况下,表计算是无法得到结果的,同比也是同理。
所以,如果想对指定的日期计算同比环比,我们需要换一个思路。
计算同比环比,需要确认3个值:本期值、上期值、同期值,所以解决的思路,是要能够定位到本期、上期和同期的日期范围,然后分别计算出对应的值。在指定日期的条件下,我们可以复用日期函数DATEDIFF()来实现。
DATEDIFF()函数在Tableau中的解释是这样的: