从数据到信息
从信息到洞察

掌握了SQL,还有必要学习DAX吗?

SQL 是一门全能的语言,可以取数、可以分析。熟练使用 SQL,是否还有必要学习 DAX,是个值得探究的话题。

本文作者 Rob Collie,前微软员工,2010-2016 年微软 MVP(SQL Server 方向),以下为正文。

一位 DBA 的来信

掌握了 SQL,还有必要学习 DAX 吗?

Rob 你好: 我之前从事软件/数据库开发工作,最近转行做 BI 分析师,在这个新领域,Excel 是我最常用的工具。得益于以往的经验,我熟悉数据库环境、可以自定义 SQL 查询和使用 SMS 管理数据模型。令我纠结的是,如果用 SMS 和 SQL 可以搞定任务,还有必要掌握 PowerPivot(DAX 函数)吗?希望是我漏掉了一些关键信息,比如,如果没有我提到的那些“重型武器”,PowerPivot 确实是一个强大的工具。也许这就是原因?

期待你的回复

Jason

注:这是一个好问题,相信还会困扰很多后来者。Jason 的观点,赞同者有之,困惑者有之,这里没有标准答案,重要的是你能从中获得什么样的启发。

你属于哪一种分析师?

一般说来,读到这篇文章的人可以被归入以下四类之一

  1. 刚接触 PowerPivot,没有 SQL 经验。(大部分 Excel 用户属于这一类)
  2. 擅长 PowerPivot,但不了解 SQL。
  3. 两者兼备(幸运组)。
  4. 擅长 SQL,刚接触 PowerPivot。

本文的目标受众是第四类用户,但和 1-3 类用户也有关系,因为每个人可能都会被问到这个问题。

DBA(数据库管理员)视角

掌握了 SQL,还有必要学习 DAX 吗?

业务人员:达戈巴星球的激光剑销量增加了吗?

IT: 内啥,我写个 SQL,明天答复你。

一名 DBA 的日常,除了写 SQL,可能还包括维护索引、查找系统瓶颈、优化 I/O 开销、创建临时数据库…等等。某一天,业务人员发现他们需要的数据都由你维护,于是带着问题找了过来。然后就发生了图片上的对话,你写了一个 SQL 查询,问题解决了。这种紧密合作的感觉非常棒,并且也让 IT 更靠近前端业务,从成本中心向利润中心转变。Jason 很可能就是这种工作方式。或早或晚你也会遇到 Jason 的疑问,“我已经掌握了一个解决问题的完美工具 – SQL,为什么还要去研究 PowerPivot?” 现在,是时候揭晓答案了。

滴管和漏斗

掌握了 SQL,还有必要学习 DAX 吗?

简而言之,SQL 是为存储和检索数据而生,并不是分析。而 SQL 被广泛用于数据分析证明了它有足够的灵活性和强大的性能,但是一项技术很难针对不同场景都优化到完美。

PowerPivot(DAX 函数)专门为数据分析进行了优化,这是 SQL 不擅长的领域,反之 DAX 也不适合用来取数和存储。由于 SQL 的存在,PowerPivot 不必在 SQL 擅长的领域做的更好,这给了 PowerPivot 更大的自由去做自己擅长的事情。

一旦把 SQL 和 DAX 组合使用,会带来显著的效益。在混合环境中,使用 SQL 来存储,准备和处理数据,然后使用 Power Pivot 来计算/分析/浏览这些数据。

再深入一层

分析任务要求以下四项特定内容,SQL 并没有做针对性的优化:

  • 聚合 – 这就是前面“漏斗与吸管”的比喻。分析很少“关注”单个行,而是由行的聚合驱动(列计算)。
  • 密集型计算 – 不仅仅是对行集合做 SUM 或 Average 运算,而是像“去年的百分比变化”和“我们的客户在头六个月内回报的百分比”
  • 临时、快速变化的查询 – 提出问题,得到答案,意识到问题有缺陷,修改问题并再次计算。这个过程需要在几秒钟内,而不是几分钟、几小时或几天内完成。
  • 易于阅读和书写的语法– 理想情况下,您希望一小部分业务用户能够学习它 – 并且掌握在上述 1-3 中描述的技能(而不仅仅是获取行数据集)掌握了 SQL,还有必要学习 DAX 吗?

20 世纪 80 年代,工程师们开始构思一种新的数据库引擎:不需要经常获取单独的行;不必允许连续写入;通常是只读的,并且不经常从源数据重新构建。这样的引擎可以自由地优化“聚合和计算”。

后来,OLAP 数据库诞生了,即在线分析处理服务,在当时,“在线”的意思是“几秒钟内找到问题的答案”,而不是“运行查询,然后回家,第二天来看结果”。

PowerPivot 的出现让 OLAP 服务变得更友好,更易于被业务人员使用,不过,这个世界仍然信奉“通过 SQL 得出答案”,尽管 OLAP 是一个伟大的发明,但在全球范围内关于 SQL 的专业知识要远远多于 OLAP 的专业知识,这让后者的学习过程看起来更加复杂(Rocket Science),相比于传统 OLAP 方案,PowerPivot 的数据存储于内存而不是硬盘,整个分析过程没有硬盘 I/O 开销,速度更快。很多商业智能的专业人士不知道 OLAP,通常有以下三个原因:

  • 大多数 BI 专家是 DBA 出身的
  • 尽管 SQL 的分析能力存在缺点,但 SQL 方法仍然对所有人都管用。
  • 替代方案(OLAP)并不容易掌握以致于很多人并不知道他们错过了什么。

快速改变查询,不仅仅可以更快得到结果,还允许你提出更高质量的问题

仅仅是重新调整透视表布局,就运行了一个全新的查询;点击切片器,查询也会相应变化。花费两秒钟,你可以从一种查询切换另一种完全不同的查询。整个过程不需要打开编辑器、修改语句、重新运行。当这种便利性和高效的计算速度结合起来,你面前的工具允许你用思维的速度开展分析。速度的提升,使得你可以尝试之前从未有过的分析体验。向工具提出之前从未考虑过的问题,这种问题在之前被称作“项目”,而现在,几分钟就可以搞定了。

最后,你把做好的 Dashboard 呈现给用户,那些完全不了解 Power Pivot 和 SQL 的人,他们也将被你赋予自主分析问题的能力,点击切片器或者自行构建透视表,即刻得到想要的结果,不需要任何专业知识也不需要漫长的等待。而你,不再需要被动响应各种需求,不再是整个分析流程上的瓶颈。

你,被解放了。

题外话

随着使用者的增加,在 Excelhome、知乎上关于 Power BI 的讨论和分享正在变的越来越多。

对于 Excel 用户,感受 PowerQuery 带来的改变是比较容易的,你可以把它想象成集合了 VBA+Excel 函数的自动化工具,从传统的 Excel 进化到 PowerQuery,是量的变化。

而 PowerPivot 的作用似乎不那么容易感知,因为 Excel 里从来没有存在过一个类似功能的东西,没有可以类比的对象。换句话说,对于 Excel 使用者,PowerPivot 是从 0 到 1 的质变。想要切实体会到这种变化带来的好处,你无法站在一旁只靠想象,你需要亲自上阵驾驭它。

扩展阅读,来自我在知乎上回答的两个问题:

Power BI 将超越 python 和 D3,成为数据可视化的福音、定性数据分析的未来?

如何才能成为 EXCEL 数据处理大神? – 知乎

6
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
3 评论数
3 被回复的评论
2 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
lyliuyouyang

高飞老师,个人对于DAX和SQL的个人使用感受如下:
SQL更适合增查删改,是一个数据容器,虽然也可以进行数据分析等操作,但是不如DAX灵活直观,速度上也没有优势。
DAX是数据的分析工具,对于数据的处理和分析速度快(聚合切片等等),但是对于数据源的更改是完全没有办法的,如果通过powerquery来更改数据,又会导致计算速度受到影响。
个人觉得两个工具可以相互结合起来使用,将SQL作为数据源,数据的增查删改就在SQL层面操作,然后链接到DAX(比如power BI或者excel)中分析处理。

游客
bi小白

也终于解答了我心中的疑问,

游客
bi小白

有点意思,似乎清晰了一些