PowerBI DAX学习路线图 增强版(2018版)

PowerBI DAX学习路线图 增强版(2018版)_第1张图片

Excel120 在 3月初随着SQLBI.com的改版,也进行了学习补充,并就最新的Power BI学习路线图做了发布。本文发布为增强版,对之前的内容做一个更详尽的说明。

DAX级别划分

如果将PowerBI DAX学习者比作修行炼的忍者,则可以分为三个级别:

PowerBI DAX学习路线图 增强版(2018版)_第2张图片

Power BI只要拖拽字段就可以实现可视化仅仅是表象,在其背后的 Vertipaq 引擎提供更加强大的动力支持;一旦开始写度量值就会一头雾水,而限于国内资料很少,大部分国内图书仍然是带大家入门,要解决实际业务的复杂问题并不容易。

如果真正度过第一个坎,便可以有以一当十之感觉,曾经一度迷恋Excel的公式的灵活的强大以及可视化的灵活多样甚至一去不复返了,这是一种变革性的魔力。

即使完全掌握了DAX的使用,而对于如何帮助实际企业完成数字化转型,进一步讲就是从业务中发现真正的指标(index),一旦发生变化如何驱动行为,以及如何在业务中计算其度量值(Measure),最终形成一套标准化指标体系(Metric)依然是个难题,因为在这部分甚至不是一个人能决定或完成的。虽然这表面与Power BI DAX无关,但Power BI DAX也许是帮助在业务中实现这些的基础,忘掉技术,从头再来。

DAX初学者

DAX初学者,刚刚进入DAX世界直到可以写简单的DAX表达式处理问题。

在这个阶段的正面表现包括:

  • 惊讶于DAX的能力和使用方式与Excel是那么的不同
  • 可以使用 SUM , MAX , VALUES , DISTINCTCOUNT 等函数
  • 理解了行上下文与筛选上下文
  • 理解了上下文转换
  • 理解了筛选的传递
  • 可以使用 FILTER( ALL( T ) , T[C] = X ) 结构
  • 可以使用时间智能函数,如:DATEADD等
  • 可以使用简单的分组函数,如:SUMMARIZE等

在这个阶段的制约表现包括:

  • 不理解CALCULATE所有执行细节流程与先后顺序,因此无法自信于自己的公式逻辑
  • 不理解迭代器这种偏技术的说法
  • 不知道SUM是SUMX的变形
  • 不知道VAR的早期绑定或晚期绑定
  • 无法处理多对多的关系以及不知道扩展表原理
  • 有时会遇到产生循环依赖的错误不知道咋回事
  • 遇到RANKX会头晕
  • 没开始使用DAX Studio

这类朋友通常希望Power BI能想他理想地一样美好,但随着业务的复杂提升,往往开始无法满足这个心愿。有一部分朋友会选择继续晋升到忍者阶段。

DAX忍者

DAX忍者,掌握了数据建模并可使用DAX处理各种实际问题。

在这个阶段的正面表现包括:

  • 可以使用时间智能类计算
  • 可以实现参数表
  • 可以实现使用静态分组
  • 可以实现ABC分析
  • 理解了扩展表
  • 正确使用VAR
  • 使用ADDCOLUMNS( VALUES( T[C] ) , "NewColumn" , << expression >> )
  • 广泛使用DAX表函数
  • 使用DAX Studio

正是因为这些正面表现,使得这个阶段的能力可以处理很多在传统Excel中无法完成的工作,并依托自己的业务能力远远不再需要依赖于IT,有种:“给我一个数据库密码,就能撬起企业数据”的赞叹。

在这个阶段的制约表现包括:

  • 开始考虑性能的问题
  • 开始思考 ALL 到底在做什么
  • 开始意识到 基表 的概念
  • 开始研究到 日期表 的原理(例如:为何不需要标记为日期表)
  • 开始完整理解 CALCULATE 的完整执行顺序
  • 如何测量DAX的性能
  • 开始考虑如何做整体建模
  • 开始使用 TREATAS

这些疑惑的解除往往会寻求在<>的阅读中获得答案并实战。这类朋友开始习惯用DAX的思维习惯思考问题,并感受到DAX:simple but not easy。

DAX禅师

因为我不是DAX禅师,所以不知道怎么定义,但我希望禅师是这样的,也许和SQLBI有些类似。

DAX禅师,精通了DAX圣经及性能优化,对DAX各处细节了如指掌,分享并帮助他人成长

在这个阶段的正面表现包括:

  • 理解Power BI底层Vertipaq引擎工作原理
  • 理解FE(公式引擎)与SE(存储引擎)的特性
  • 理解应该如何让FE与SE支持DAX运行得更好
  • 理解并能优化数据模型
  • 可以用DAX实现数据模型能支持的所有业务问题
  • 可以量化测试DAX公式的性能并找到瓶颈
  • 可以理解Vertipaq的逻辑查询计划与物理查询计划
  • 可以理解SE对Vertipaq的查询
  • 能够对DAX公式做性能优化

达到这些级别的人,例如SQLBI的大师会发出这样的感慨:

We started learning DAX in 2010 and we are writing this book in 2015. Unbelievably, it took us five years to master the code of DAX and of the engine, with a lot of discussions and meetings with the development team in the meantime.
Doing that is still hard for us, too.
-- DAX圣经 第十一章末

大师的意思是:(添油加醋版)

别看表面上我们很牛,我们从2010年就可以搞这个了(在此前已经是SQL方面的多年用户),搞了5年才说自己掌握了DAX以及底层机制,也才写出了这本书,这些年不知道因为这么多坑找了微软开发组多少次去和他们撕,开了多少会来搞清楚这些问题,哎,能读到这书,只要多读几次,比我们都幸运。如果你感觉难,那太正常了,我们现在都仍然觉得难呢。

经过对大师博客、文章以及书籍的认真学习,体会到他们应该在思考包括但不限于:

  • 把DAX的内容更加体系化和简单化地揭示出来,他们不断有著作和培训视频诞生
  • 开发出可以辅助的工具
  • 更广泛的传播给其他人
  • 帮助到所有遇到DAX麻烦的人
  • ...

再有就是我也领悟不到的东西了。很难想象他们从那个2010年,应该是Excel 2010的Power Pivot开始的,看到现在的Power BI,真心不会去用Excel 2010的Power Pivot。

学习路线图

PowerBI的老伙伴都知道,学习PowerBI的问题最终会归结为学习DAX的问题。而DAX存在于微软的三套工具中,他们分别是:

  • Power BI系列(包括Power BI Desktop以及Power BI服务)
  • Excel PowerPivot
  • SQL Server Analysis Service

这些工具的对象用户略有不同,包括:

  • 从PowerBI开始接触整个体系,一般是数据建模分析人员
  • 从Excel PowerPivot开始接触整个体系,一般是Excel用户,如:财务。
  • 从SSAS开始接触整个体系,一般是IT技术人员

下面分别说明SQLBI更新的学习路线图:

如果从PowerBI开始

PowerBI DAX学习路线图 增强版(2018版)_第3张图片

如果从Excel开始

PowerBI DAX学习路线图 增强版(2018版)_第4张图片

如果从IT技术(SSAS)开始

PowerBI DAX学习路线图 增强版(2018版)_第5张图片

SQLBI.COM 学习路线图参考:https://www.sqlbi.com/guides/dax/

强烈建议从Power BI开始。注意:而不是Excel PowerPivot。

重点书籍

在学习路线图中陆续出现了几本图书,它们的学习顺序大致为:

PowerBI DAX学习路线图 增强版(2018版)_第6张图片

其中,免费图书为:

PowerBI DAX学习路线图 增强版(2018版)_第7张图片

下载地址:https://aka.ms/Cj3zc4

其中,免费视频为:

https://www.sqlbi.com/p/introducing-dax-video-course/

另外,大部分图书的英文电子版已共享于Excel120 QQ群文件。

Power BI DAX 自我测评

对于有一定DAX基础的伙伴,建议可以可以先评估自我的Power BI DAX水平:

PowerBI DAX学习路线图 增强版(2018版)_第8张图片


点击答题

提交您的Email地址或加入Excel120交流群,可以收到一份详尽的试题详解:


PowerBI DAX学习路线图 增强版(2018版)_第9张图片

根据详解中给出了考点来明确自己存在的薄弱环节,再返回学习书籍。如果没有获得这个答案,可以关注Excel120留言索取

终极学习法

如果想彻底学会一件事物,就要彻底地学。如何才算彻底?穷举式地全部研究(而不是看)完。

对于一项技术,正如SQLBI大师所言,越研究越是坑,能爬出来就更加开朗。如果说有捷径的话,就是精读有限的被斟酌过最多次的书。什么叫斟酌,就是里面的每个用词都仔细地考虑过,所以作者必然是操作过所有细节的,以<>为例,我们来看看它被斟酌过的地方。

例如,对于 ALL 这个函数的解释,微软的DAX文档是这样解释的:( 阅读原文 )
Returns all the rows in a table, or all the values in a column, ignoring any filters that might have been applied. This function is useful for clearing filters and creating calculations on all the rows in a table.

中文是:

返回表中的所有行或者返回列中的所有值,同时忽略可能已应用的任何筛选器。 此函数可用于清除筛选器并对表中的所有行创建计算。

看一个例子,如果 DimDate表 有2556条记录,那么 CountRows( DimDate ) 返回2556条记录,如果与 DImDate 关联的 FactSales 在其中的1096天有销售记录,那么以下3个DAX表达式结果应该是多少:

  1. Calculate( CountRows( DimDate ) , FactSales )
  2. Calculate( CountRows( DimDate ) , All( FactSales ) )
  3. Calculate( CountRows( DimDate ) , Filter( All( FactSales ) , true ) )

答案是:公式1返回1096,公式2返回2556,公式3返回1096。请思考为什么?
DAX圣经中给出的答案在:Page 444。但书中第一次提及ALL的使用规则是在:Page 92。关于对ALL的英文描述包括:

  • Return all rows ... 中文是 返回所有行
  • Remove filters ... 中文是 移除 筛选器
  • Ignore filters ... 中文是 忽略 筛选器

如果您仔细考究它们是有严重区别的:

  • 返回所有行不意味着筛选器被移除了,可能是ALL的特殊性,可能筛选器依然存在,筛选器会影响其他计算。
  • 移除筛选器,就是这个筛选器没了,没了后那会不会返回内容,没了的话那别的计算也不会再受影响。
  • 忽略筛选器,就是计算过程中对此视而不见,忽略的潜台词就是依然存在,并未移除,那别的计算会继续受到影响。

怎么样?有没有凌乱但有很细微的差异的感觉。

这里列举微软文档和SQLBI的说明,就是为了比对,官方文档的记载可能真没有考虑到这么细致;而SQLBI的书中则在每一个必要的环节都有所顾及,而如果是翻译的话(或者不加强调的用白话描述),能够在合理的地方做出这样精准的描述恐怕真的是太难了。

因此,研习英文版的DAX圣经是非常有必要的。

如果还有余力,建议研习的著作包括:


PowerBI DAX学习路线图 增强版(2018版)_第10张图片

最重要的一件事情是,您应该关注:

PowerBI DAX学习路线图 增强版(2018版)_第11张图片

你可能感兴趣的:(PowerBI DAX学习路线图 增强版(2018版))