PowerBI切换日期维度

更新时间:2023-06-08 23:31:03 阅读: 评论:0

PowerBI切换⽇期维度
PowerBI切换⽇期维度
聒噪怎么读音
当⼀个表中有⽇期的具体号数,我们在筛选⽇期的时候,需要根据年、季度、⽉、星期、⽇等⼏个不同的时间维度切换。本质就是给每⼀条数据的⽇期分别加上我们需要的这⼏个维度。
新建⼀个表先将表中的⽇期提取出来,从开始⽇期到结束⽇期中的每⼀天都提取出来,并依次打上各个维度的标签,点击建模,再点击新建表,使⽤DAX函数提取⽇期
然后使⽤如下的DAX函数
Dates(All Service Data)=
//模板函数
//构造⽇期表的⽅法
//本⽅法基于数据模型中最⼤的表
VAR BeginDate = MINX( { MIN('All Service Data'[Assign Date] ) } , [Value] )  // 根据实际修改
VAR EndDate = MAXX( { MAX('All Service Data'[Assign Date] ) } , [Value] )  // 根据实际修改
//⽣成⽇期表,以下内容⽆需修改
RETURN
ADDCOLUMNS(
CALENDAR(
DATE( YEAR( BeginDate ),1,1),//开始⽇期
DATE( YEAR( EndDate ),12,31)//结束⽇期
),
"Year", YEAR( [Date] ),
"Quarter", SWITCH(TRUE(), MONTH( [Date] )IN { 1,2,3 } ,1, MONTH( [Date] )IN { 4,5,6 } ,2, MONTH( [Date] )IN { 7,8,9 } ,3, MONTH( [Date] )IN { 10,11,12 } ,4),
"YearQuarter", YEAR( [Date] )*10+ SWITCH(TRUE(), MONTH( [Date] )IN { 1,2,3 } ,1, MONTH( [Date] )IN { 4,5,6 } ,2, MONTH( [Date] )IN { 7,8,9 } ,3, MONTH( [Date] )IN { 10,11,12 } ,4),
"Month", MONTH( [Date] ),
"YearMonth", YEAR( [Date] )*100+ MONTH( [Date] ),
"Week", WEEKNUM( [Date] ,2),
水果保鲜"YearWeek", YEAR( [Date] )*100+ WEEKNUM( [Date] ,2),
"Day", DAY( [Date] ),
"DayInWeek", WEEKDAY( [Date] ,2)//周1=1, ... ,周⽇=7
)
得到以下的表
再新建⼀个区间表,将以上的⽇期标记上各个维度的标签。
大理石背景墙>易经周易
DatesPeriod(All Service Data)=
//⽇期区间表,⽤于动态筛选⽇期高一生
//模板
//依赖:
//主⽇期表,如:Dates,主⽇期表必须由DatesTemplate构建
//参数:
// X
VAR X ='Dates(All Service Data)' // 设置主⽇期表
//以下⽆需更改五行缺水戴什么
电脑组装机
VAR PeriodYearLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [Year] ,"0
"), "⽇期" , [Date] ), "区间类型" , "Yearly" , "区间类型O rderBy" , 10 , "区间OrderBy" , YEAR( [⽇期] ))
VAR PeriodQuarterLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [Year] ,"0")&"Q"& FORMAT( [Quarter] ,"0"), "⽇期" , [Dat e] ), "区间类型" , "Quarterly" , "区间类型OrderBy" , 20 , "区间OrderBy" ,( YEAR( [⽇期] )*10+ VALUE( FORMAT( [⽇期] ,"q")))*10)
VAR PeriodMonthLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [Year] ,"0")&"M"& FORMAT( [Month] ,"0"), "⽇期" , [Date] ) , "区间类型" , "Monthly" , "区间类型OrderBy" , 30 , "区间OrderBy" ,(  YEAR( [⽇期] )*100+ MONTH( [⽇期] ))*100)
VAR PeriodWeekLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [Year] ,"0")&"W"& FORMAT( [Week] ,"0"), "⽇期" , [Date] ), "区间类型" , "Weekly" , "区间类型OrderBy" , 40 , "区间OrderBy" ,(  YEAR( [⽇期] )*100+ WEEKNUM( [⽇期] ,2))*1000)
VAR PeriodDateLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , FORMAT( [Date] ,"yyyy/M/dd"), "⽇期" , [Date] ), "区间类型" , "Daily" , "区间类型OrderBy" , 50 , "区间OrderBy" , [⽇期] )
RETURN UNION( PeriodYearLevel , PeriodQuarterLevel , PeriodMonthLevel , PeriodWeekLevel , PeriodDateLevel )
⽣成的表如下:
最后建⽴各表之间的关系,Dates表作为中间表,建⽴如两个表的关系。但是注意,Dates表与DatesPeriod之间的关系要为双向关系,否则不起作⽤。
最后结果为下:
上海到西藏

本文发布于:2023-06-08 23:31:03,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/906476.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:关系   维度   期表   提取   筛选   需要   点击
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图