前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技巧—新建日期表

技巧—新建日期表

作者头像
公众号PowerBI大师
发布2019-08-07 14:59:32
1.6K0
发布2019-08-07 14:59:32
举报

PowerBI中最常用的表是什么?

毫无疑问,日期表!

不同行业的分析,维度表有类别之分,数据表有指标计算之别。但当谈到日期时,基本是一致的。而且日期表也是我们使用时间智能的前提。

由于日期表、时间智能公式非常的好用,往往在做分析时我们都会加入一张日期表。对于我个人,因为经常会收到一些读者发来的数据建模问题,建立日期表对我来说也是一项重复性操作。如何以最快的速度生成一张通用而且好用的日期表呢?很多人都想要找到一个适合自己的最优方案。

常见的方法有四种:

1) 用Excel制作,导入PowerBI (这是最灵活的方法,尤其在使用定制的日历表时)

2) PowerQuery生成,利用编辑查询器中的添加日期列功能(这是以往我比较喜欢的方式,在日历表的使用文章中曾介绍过)

3) 复制前人写过的PowerQueryM代码。这种方法很快很方便,只不过对于很多人这属于黑箱操作,并不理解语句的具体含义。

4) 写DAX公式生成

本文想推荐的就是这第四种写DAX公式的方法,它是所有方法中最快的。

最近在实践中经常使用,屡试不爽。只需要两个步骤,新建表,再复制一段DAX公式。

为什么说这是一个非常好用的方法?我的理由有4点:

1. 上图例子中,Calendar函数生成了一张2016年12月28日到2017年12月31日的日期表。这里的日期可以随意的去替换。

并且,还可以把起始日期替换成Firstdate和Lastdate,比如Firstdate('销售数据表'[订单日期])可以得到销售数据表中的最早订单日期,Lastdate可以得到最近的日期,此方法生成的日期表将永远等于数据表的日期范围,这往往也是我们想要得到的效果。

2. Addcolumns的含义是在生成日期表基础上添加列,这与使用Excel制表的逻辑是一样的。利用基本的日期函数Year、Month、Weeknum和算式求得每一个日期的年季度月日,这些函数与Excel的函数相同,对Excel的使用者来讲不难理解。

Marco说这个公式执行了很多重复的计算,如果利用VAR、Generate、Row函数可以调成最优。

但我认为日期表即使跨度十年也就是3650行,用写两倍长的代码来提升0.0X秒的计算速度,并没有什么吸引力。如果说在速度和简单上来找一个平衡,我更倾向于简单。(当然,这只是针对日期表这个例子。Marco的那篇文章主要是为了说明Generate/Row可以更好地取代Addcolumns,这是另一个有意义的话题。)

3. 注意到在建立[年月]列时,我使用的方法是Year([Date])*100+Month([Date])数字计算,而不是利用Format函数生成“年份月份”的文本格式。这样的好处是在后期使用中不会涉及到日期表的排序问题。(比如经常会遇到“2016年11月”会排在“2016年2月”的前面,而用201611和201602就会很好地避免了这种问题)

4. 这个公式并不难,保存下来可以复制粘贴使用。即使手工输入也不会很费力气。最重要的是你能够理解此公式的含义,根据自己的需要利用Excel类的简单日期函数做调整。

我把公式写在了下面,供直接复制使用。

--------------------------

日期表 = ADDCOLUMNS ( CALENDAR ( date(2016,12,28),date(2017,12,31) ), "年", 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]) )

--------------------------

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI大师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档