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])
)

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

交叉表 列字段排序_PowerBI创建日期表相关推荐

  1. 交叉表 列字段排序_Tableau学习系列(8):表计算

    Tableau表计算,是针对多行数据进行计算的方式,创建表计算后,在"标卡/行/列"功能区的该计算字段,其右侧会出现正三角形符号.表计算能较好解决日常分析中的许多计算问题. 对同一 ...

  2. 交叉表 列字段排序_百度App设计部:四步打造交互设计自查表

    UXD设计研究室 · 百度MEUX外部合作自媒体 设计自查是设计师常用的检验工具,经常以"自查表"形式呈现,可以帮助我们快速遍历设计方案,修正遗漏或不周.善用设计自查,不止可以避免 ...

  3. python对比excel两列数据_python 对比excel表格数据表-python实现两个excel表列数据对比若源表与目标表存......

    在数据分析方面,比起python,excel的局限性在哪 data3 = pandas.merge(data1, data2, on=['名称'], how='inner') inner:内连接,取交 ...

  4. hive表列字段显示

    要在hive表中显示列名,我们可以在hive命令行中开启 hive> set hive.cli.print.header=true; 但显示的列字段会带表名,列名会很冗长,所以要去除掉表名,单独 ...

  5. 交叉报表列头排序时遇到的oracle问题—oracle ORA-12704:字符集不匹配、varchar2转化为nvarchar2字符缺失、case when else后的字符类型要一致...

    在做交叉报表列头的排序时,遇到这三个问题,下面具体来说一下. 设计的数据库的表结构如图1所示: 图1 要处出来student_name_,s.grade_,s.subject_name_,这三个属性, ...

  6. mysql表中字段数据类型_mysql数据表中字段的数据类型有哪些?

    数据表中字段的数据类型有:TINYINT.SMALLINT.MEDIUMINT.INT.INTEGE.DATETIME.DATE.TIMESTAMP.TIME.YEAR.CHAR.VARCHAR.TE ...

  7. 表 合并字段_多工作表动态合并,其实很简单

    小伙伴们好啊,今天老祝和大家分享一个动态合并多个工作表的技巧. 很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并到 ...

  8. 数据库的表和字段的注释。表的结构。(转)

    这里的表结构指的表的基本信息:表名,表的注释(备注),字段名,字段类型,长度,是否允许空,缺省值,字段注释(备注). 主要的是注释..你的表明叫lcxxb,字段名叫lcmc,智商300的用户也看不懂你 ...

  9. a表两个字段都与b表一个字段关联_数据库表的主键实例分析

    主键(PRIMARY KEY):数据库表通常具有包含唯一标识表中每一行的值的一列或一组列.这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 业务主键(自然主键):在数据库表中把具有业务 ...

最新文章

  1. pom文件中引入常用的maven仓库
  2. Opencv cv2 Overload resolution failed
  3. ABAP:ALV中自定义搜索帮助
  4. EF Core 生成数据库
  5. html+id选择器如何使用方法,id选择器_HTML+CSS前端基础知识教程_腾讯视频
  6. ubuntu linux root,Ubuntu 中的 root 用户:你应该知道的重要事情 | Linux 中国
  7. linux批量安装 五大开源软件挨个看,Linux批量安装 五大开源软件挨个看(1)(5)
  8. python 网络渗透_python 网络编程(渗透与编程一)
  9. 如何消灭 Android 应用中的广告?
  10. 网络安装ubuntu操作系统
  11. 机器学习极好的入门学习视频推荐
  12. 服务器虚拟化cas,CAS虚拟化建设方案
  13. 美元符号在什么计算机语言,美元符号是什么?怎么打?
  14. 光栅图形学(一)——直线段的扫描转换算法
  15. Windows 7下IE9升级到IE 11,F12控制台不能使用的解决方法
  16. 电影《海贼王:红发歌姬》观后感
  17. sap Payment Terms Terms of payment 收付款条件
  18. 仿乐享微信营销服务系统源码免费下载
  19. 在阿里云开通SSL后,网站PING不通!再说一下 阿里云的服务响应和体验真心的太差!!你们有没有同感?
  20. Altium Designer 导入PCB库

热门文章

  1. php用Simple Excel导出xls
  2. 【中文】Joomla1.7扩展介绍之JoomSEF Free (搜索引擎友好)
  3. gdb中看内存(x命令)
  4. Ffmpeg+Node.js+jsmpeg.js实现html5播放rtsp
  5. IDEA——使用JSONObject时报错
  6. Apache源代码全景分析第二卷——HTTP请求处理
  7. 高流量大并发Linux TCP性能调优
  8. 重置忘记的mysql root密码
  9. Android基础——数据持久化存储
  10. hash_map allocator