隐藏

DAX 时间函数--生成日期表

发布:2024/11/22 12:18:56作者:管理员 来源:本站 浏览次数:127

在讲 DAX 时间函数之前,请大家先保存以下下面的代码,这是用来生成一个日期表的,非常实用,对着代码讲学得更快。


   日期表 = --------------------POWER BI 中制作日期表的相关参数,可根据需要修改

   VAR YearStart = 2020    //起始年度

   VAR YearEnd = 2024      //结束年度

   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,        

                                  "年月编号" , ( 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    

                         )

            )


这一段代码会生成如下的日期表,直到 2024 年结束


在讲 DAX 时间函数之前,先说一下日期格式,日期格式中有 7 个属性,分别是“Date”、“MonthNo”、“QuarterNo”、“年”、“日”、“月份”。


这 7 个属性是什么,可以简单从下表看出来。


1)此处最关键的函数即 CALENDAR,它有两个参数 <起始日期>,<截止日期>,请注意此处


   <起始日期>,<截止日期> 类型都是 DATE 日期类型,它是由 DATE 函数生成的。


CALENDAR 生成了一个列表,从<起始日期> 到<截止日期>,其中每个标量都是都是日期格式的。


2)DATE 函数非常重要,它有三个参数 <年>, <月>, <日> ,缺一不可。每个参数都是一个确切的整数。


DATE 函数有很强的容错机制,如果输入参数有误,那么它会生成最接近的日期。