东哥陪你学PowerBI——日期表
![](https://img.haomeiwen.com/i14698263/033f4cf6e338b58f.png)
常在群里看到很多关于对日期表的疑问和困惑,尤其是刚进群的初学者。那今天我们就来聊一下,日期表是怎么回事,在业务分析里究竟起了什么作用
日期表,故名思义,就是存放日期的表
新人常会感到困惑,业务表(销量、业绩、采购、检验、出/入库等单据)里不都有日期列吗,为什么还要把日期放在一张额外的表里?
大家都知道,不管零售、制造、金融还是其他什么行业,但凡涉及到数据统计,都离不开日期维度的分析,如累计销量、环比增速、同比增长等。对于此类问题,DAX专门提供了一批函数来解决,就是“时间智能函数”(公众号之前的“东哥陪你学DAX”系列卡片已经介绍过不少)
时间智能函数的参数大多以日期为主,之所以不用业务表的日期列,是因为单独日期表有以下几个特点
-
日期表的日期是独立完整的,没有缺失,这对时间智能函数来说很重要。业务表里的日期只有业务发生时才会有记录,否则就缺失
-
日期表除了自带的日期列,可以衍生出其他日期相关列,诸如年、月、日、季、周等,一年365行数据。业务表就不同了,一个公司有N个部门,一个部门有N个员工,假如每个员工每天产生一条业务数据,那一年要多少行?如果想按季统计销量,按月统计采购、按周统计销量、就必须同时扩充这三张表里的日期列——毫无效率,凭添隐患
下图就是最明显的实证,业务日期的缺失,当天没有业绩可以理解,但全月累计还是要正常统计,不应略过,使用单独日期表就不会出现这种情况
![](https://img.haomeiwen.com/i14698263/447fc2476f192839.png)
![](https://img.haomeiwen.com/i14698263/46412c51122dcbee.png)
下面我们来介绍几种建立日期表的方法
1、在EXCEL中建立日期表,导入PBI
A列通过下拉填充完成,B/C/D都是通过EXCEL公式获取
B2 = year(A2),C2 = month(A2),D2 = day(A2)
![](https://img.haomeiwen.com/i14698263/7b9433e4ab29852e.png)
导入PBI后,若想继续提取日期信息并增加列,可以在PQ界面里可以通过“添加列”的日期菜单来执行
![](https://img.haomeiwen.com/i14698263/a4c7011e9dba9b37.png)
也可以通过“自定义列”来设置更复杂的日期信息(该对话框里输入的是M语言,与DAX不同)
![](https://img.haomeiwen.com/i14698263/1395e5e1c5c8fb13.png)
2、在PBI中利******用DA******X函数建立日期表
(calendar和calendarauto两个函数可参见之前的DAX专题)
![](https://img.haomeiwen.com/i14698263/0b06f92aaed2e990.png)
3、在PBI中用ADDCOLUMNS******建立日期表
实际业务里,ADDCOLUMNS比单纯使用calendar更便捷更灵活
![](https://img.haomeiwen.com/i14698263/a71e1fea64656c7f.png)
4、在PB******I中用var + retur******n建立日期表
![](https://img.haomeiwen.com/i14698263/4f1200e37414df28.png)
![](https://img.haomeiwen.com/i14698263/7b4f18ba7b2e3055.png)
5、在PBI的Power Query里建立日期表
这个方法在DAX函数Calendar卡片里也有提到过,用的是M语言。严格来说,这并不是建立日期表的最佳方案,因为它可以指定间隔,也就是说,它可以生成非连续日期的日期表,因此要谨慎对待
![](https://img.haomeiwen.com/i14698263/0ec4b24ac8c94756.png)
![](https://img.haomeiwen.com/i14698263/45530db962ead455.png)
![](https://img.haomeiwen.com/i14698263/1909ba9a915022dc.png)
![](https://img.haomeiwen.com/i14698263/2ad74c34524dfa66.png)
![](https://img.haomeiwen.com/i14698263/1d07f8c5b4d60e91.png)