zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Power BI: 日期表的创建

2023-02-18 16:32:47 时间

文章背景: 最近在学习Power BI进行报表的制作,其中有一项内容是日期表。日期表是使用时间智能函数的基础,Power BI可以为具有日期或日期/时间类型的字段自动创建一个隐藏的日期表(见下图),但不能很好地满足要求,一般需要手动创建日期表。

下面介绍手动创建日期表的三种方式。

1 使用Excel文件创建日期表

准备一张具有日期的Excel表格,导入Power BI,并标记为日期表即可。

2 使用M函数创建日期表

在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.

3 使用DAX函数创建日期表

DAX创建日期表有多种方法,最简单的方法有两种:CALENDARAUTOCALENDARAUTOCALENDARAUTO依托于数据源中的日期范围;CALENDAR用于手动指定日期范围。推荐使用CALENDAR函数。

3.1 CALENDERAUTO构造法

Power BI可以自动识别数据中涉及的日期范围,生成日期表格。

3.2 CALENDER构造法
日期表 = 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)