文章背景: 最近在学习Power BI进行报表的制作,其中有一项内容是日期表
。日期表是使用时间智能函数的基础,Power BI可以为具有日期或日期/时间类型的字段自动创建一个隐藏的日期表(见下图),但不能很好地满足要求,一般需要手动创建日期表。
下面介绍手动创建日期表的三种方式。
准备一张具有日期的Excel表格,导入Power BI,并标记为日期表即可。
在Query中,使用List.Dates
函数构建日期列表,然后再转化为表格。
= List.Dates(#date(2017,1,1),730,#duration(1,0,0,0))
List.Dates(start as date, count as number, step as duration) as list
Returns a list of date
values of size count
, starting at start
. The given increment, step
, is a duration
value that is added to every value.
DAX创建日期表有多种方法,最简单的方法有两种:CALENDARAUTO
和CALENDARAUTO
。CALENDARAUTO
依托于数据源中的日期范围;CALENDAR
用于手动指定日期范围。推荐使用CALENDAR
函数。
Power BI可以自动识别数据中涉及的日期范围,生成日期表格。
日期表 = ADDCOLUMNS (
CALENDAR ( FIRSTDATE('销售明细'[销售日期]),LASTDATE('销售明细'[销售日期]) ),
"年", YEAR ( [Date] ),
"季度", ROUNDUP( MONTH ( [Date] )/3,0 ),
"月", MONTH ( [Date] ),
"周", WEEKNUM([Date]),
"年季度", YEAR ( [Date] ) & "Q" & ROUNDUP( MONTH ( [Date] )/3,0 ) ,
"年月", YEAR ( [Date] ) * 100 + MONTH ( [Date] ),
"年周", YEAR ( [Date] ) * 100 + WEEKNUM ( [Date] ),
"星期几", WEEKDAY([Date],2)
)
(1)采用DAX函数最大的好处在于无需外置表格。
(2)为了使生成的日期表将永远等于数据表的日期范围,上述代码中采用了FIRSTDATE函数和LASTDATE函数。
参考资料:
[1] Power BI商业数据分析项目实战(https://item.jd.com/12573886.html)
[2] PowerBI创建日期表(https://zhuanlan.zhihu.com/p/29025875)
[3] 手把手教你学PowerBI数据分析:制作销售业绩分析报告(https://kknews.cc/news/9vjr485.html)
[4] List.Dates (https://docs.microsoft.com/en-us/powerquery-m/list-dates)
[5] DaxDateTemplate (https://github.com/sql-bi/DaxDateTemplate)