制作日期表

在Power BI中经常需要使用到日期表,尤其是使用DAX中的时间智能函数。在excel 2016版本的Power Pivot中,我们可以使用新建日期表的功能快速创建一张日期表,但是在2013及Power BI中就没那么方便了。不过这种问题在我们如此灵活的PQ中,当然只是小case啦~
首先需要根据开始和结束日期构建一个日期的list,但是你不能直接用={#date(2017,1,1)..#date(2017,12,31)},这是不允许的,那么就需要先把date转换为number,构建list,最后再把number转换为date,实现曲线救国。
再把起止年做成变量,封装在自定义函数中,这样我们再次使用时只需要输入起止年就得到一张完整的日期表了。制作日期表,涉及的知识点包括date与number之间的相互转换,以及一些日期时间类函数的应用。

let
    日期表 =(start_year as number,end_year as number)=>
    let
	日期 = Table.TransformColumnTypes(#table({"日期"},List.Transform({Number.From(#date(start_year,1,1))..Number.From(#date(end_year,12,31))},each {Date.From(_)})),{{"日期", type date}}),
	年 = Table.AddColumn(日期, "年", each Date.Year([日期]),type number),
	月 = Table.AddColumn(年, "月", each Date.Month([日期]),type number),
	日 = Table.AddColumn(月, "日", each Date.Day([日期]),type number),
        星期 = Table.AddColumn(日, "星期", each Date.DayOfWeek([日期],0),type number),
	季度 = Table.AddColumn(星期, "季度", each Date.QuarterOfYear([日期]),type number),
	日期文本 = Table.AddColumn(季度, "日期文本", each Date.ToText([日期],"yyyy年MM月dd日"),type text)
    in
	日期文本
in
    日期表

可根据实际需求进行修改,快来动手制作一张你自己的专属日期表吧。

2 Replies to “制作日期表”

  1. 不需要将日期转换成number来构建list,可以用日期函数直接得到日期列表:
    日期列表=List.Dates(#date(2017,12,31),Duration.Days(#date(2017,12,31)-#date(2017,1,1)),#duration(1, 0, 0, 0))

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注