日期作为最常用的分析维度,几乎每个数据模型中都需要有个日期表,之前分享了几种日期表的制作方法:日期表制作方式汇总

 

那篇文章主要是介绍如何制作日期表,其中的日期表示例相对简单,和日期相关的维度也不够齐全,根据平时分析的需要,以及星友的反馈,这里再分享一个维度更多也更实用的日期表。

 

本文不再分别用几种方式来制作,免得你纠结选择哪种方式,直接用DAX来建一个日期表,在PowerBI Desktop中,点击“新建表”,输入以下DAX公式:

 

  •  
日期表 = ------------------------------------------------------------------制作日期表的相关参数,可根据需要修改
VAR YearStart = 2019 //起始年度VAR YearEnd = 2021 //结束年度
VAR WeekNumberType = 2 // WEEKNUM第二个参数类型,控制每周的开始时间,返回此周在一年中的编号 // 1,一周从星期日开始 // 2,一周从星期一开始
VAR WeekDayType = 2 // WEEKDAY第二个参数类型,控制每周的开始时间,返回周几的编号 // 1,一周从星期日 (1) 开始,到星期六 (7) 结束,编号 1 到 7 // 2,一周从星期一 (1) 开始,到星期日 (7) 结束,编号 1 到 7 // 3,一周从星期一 (0) 开始,到星期日 (6) 结束,编号 0 到 6-----------------------------------------------------------------
RETURN
GENERATE ( CALENDAR( DATE( YearStart , 1 , 1 ) , DATE( YearEnd , 12 , 31 ) ), VAR Year = YEAR ( [Date] ) VAR Month = MONTH ( [Date] ) VAR Quarter = QUARTER( [Date] ) VAR Day = DAY( [Date] ) VAR YearMonth = Year * 100 + Month VAR Weekday = WEEKDAY( [Date] , WeekDayType ) VAR WeekOfYear = WEEKNUM( [Date] , WeekNumberType ) RETURN ROW ( "年" , Year , "季" , Quarter , "月" , Month , "日" , Day , "年度名称" , "Y" & Year , "季度名称" , "Q" & Quarter , "年度季度", Year & "Q" & Quarter , "年季编号" , ( Year - YearStart )*4 + Quarter, "月份名称", FORMAT ( [Date], "OOOO" ) , "英文月份", FORMAT ( [Date], "MMM" ) , "年度月份" , YearMonth , "年月编号" , ( Year - YearStart )*12 + Month, "年度第几日" , INT( [Date] - DATE( Year , 1 , 1 ) + 1 ), "星期编号" , Weekday , "星期名称" , FORMAT( [Date] , "AAAA" ) , "星期英文" , FORMAT( [Date] , "DDD" ) , "年度第几周" , WeekOfYear , "周编号", "W" & RIGHT( 0 & WeekOfYear , 2 ) , "年周" , Year & "W" & RIGHT( 0 & WeekOfYear , 2 ) , "日期编码" , Year * 10000 + Month * 100 + Day ))

 

就可以得到一张下面的日期表:

 

分享一个更实用的Power BI日期表_实用的Power BI日期表

 

当你需要建日期表时,可以直接复制上面的DAX公式制作自己的日期表。

 

 

 

这个日期表有以下几个特点:

 

1. 可方便的修改日期参数

 

分享一个更实用的Power BI日期表_实用的Power BI日期表_02

 

主要是根据需要修改日期表的起止年度,以及和周相关的参数,一般我们的使用习惯是从周一开始,正常情况下不需要修改周的参数。

 

2. 便于对月份等文本字段排序

 

日期表中对月份、季度都添加有数字列,可以更方便的进行按列排序,比如对中文的月份字段进行按列排序:

 

分享一个更实用的Power BI日期表_实用的Power BI日期表_03

 

 

3. 添加有年月序号和年季序号字段

 

在之前的文章中,曾使用过年度月份序号(比如:无日期上下文如何计算同比环比?其实很简单),在不适合使用时间智能函数的分析场合,利用这个连续的序号分析十分方便。

 

4. 提供了中英文的月份和星期字段、以及周相关的字段,满足更多的场景需求。

 

制作一个顺手的日期表十分重要,根据分析的需要扩展日期表中的相关维度,可以更清晰快捷、以及用更简洁的DAX公式来实现日期相关的分析需求。

 

这个日期表中的维度不算是最齐全的,但非常实用,足够日常的分析场景使用。如果你还有更个性化的需求,可以在这个日期表的基础上添加相关的列。