日历表使用
同第一个阶段一样,特别附加一个小章节的目的是想把没有完善的且重要的知识补全。本节有三个知识点,日历表排序,在PowerQuery中创建日历表,定制日历表的使用。
1
日历表排序
为什么要排序?用一个最简单的例子,以星期做一张矩阵表,你会发现星期的排序并不是我们常用的周一到周日,而是按照拼音ABC顺序来排列的。怎样才能更正次序?
只需两个步骤, 1)给星期添加一个顺序的编码。这个可以利用编辑查询器的添加日期列功能添加一个每周的某一日列。
2)添加后关闭并应用编辑查询器,在表格视图中我们能够看到每周的某一日列1234567。选择星期列,让它按照每周的某一日列来排序,顺序就修正过来了。
这是一个需要你举一反三的方法,在实践中我们可能会经常遇到文本排序不合理的问题,都可以参招这个方法去修正。
2
日历表的制作方法
关于日历表的制作方法有很多,利用Excel表最简单常用,此外另一个作者本人比较青睐的方法是在PowerQuery中直接建立一张日期表,这样你就不用再担心数据源表的变更问题。(当然如果你手里有一张很好用的日期表,完全可以跳过这一段,这个只是多给你提供一条路。)这个方法的基本步骤是:
1)新建一个空查询。
2)在公式栏里输入=List.Dates,输入日期起点、长度、颗粒度(下图演示中以2016年1月1日为起点,长度1000天,颗粒度即间隔为1天)
3)再点击“到表"转换成表格式。
我们再修改成日期格式和按照自己的需求做一些类别编辑,添加年月周星期等等,一个完整的日期表就生成了。当然请你记住这个日期表在数据模型中是作为Lookup表使用的,所以要在后续的工作中关联好数据表。
3
定制版日历表
上一节我们提到日历表分为两种:标准版和定制版。对于定制版的日历,内置的Datesytd,Previousmonth...这些时间智能函数不好用了,我们需要一个能应对定制日历表的万金油方法。
以中国香港上市公司的财年日历来举例,每年的4月1日到次年的3月31日为一财年,我们怎样实现按照财年分析数据呢?答案是把定制与标准日历表关联起来。
1)首先我们肯定要有一张定制版日历表如下,添加一个不重复的ID列。
2)保留标准的日历表,按照定制版的日历表ID来给标准日历表设定ID。比如2015年7月1日到2015年7月31日在定制的财年日历表中ID是7,那么我们需要在标准日历表中把2015年7月的每一天都标注ID为7,这个工作你可以直接在Excel源表中添加。
3)在这样的设定下,两张表可以通过ID按照1对多的关系关联起来,运用到数据模型中。
不难想象这个关联表可以让我们绘制出一个以财务年份月份展示销售量的表。
那么如何才能做到像时间智能函数一样求上个月的销售量呢?
这个万金油句型就是
=Calculate([销售量],
Filter( All('定制日历表‘),
'定制日历表'[ID]=Max('定制日历表'[ID]-1))
如果你想做年比年比较求上年同期的值,只要修改条件为'定制日历表'[ID]=Max('定制日历表'[ID]-12。定制日历表的使用场景还有很多,比如一些美企用4-4-5日历,还有如果你想以周、小时、分钟、秒为时间单位分析(时间智能是没有previousweek或者datewtd这样的函数的),这些都需要你精通这类万金油公式。明白了它的原理,其他的应用都是触类旁通。
这是一个举一反三的学习章节。我们大部分的数据分析都会涉及到时间维度,所以精通时间函数和日历表会让你的数据分析游刃有余。
祝好,