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

掌握了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数据处理大神? – 知乎

原创内容 转载请联系作者:PowerBI极客 » 掌握了SQL,还有必要学习DAX吗?

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #2

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

    bi小白6天前回复
  2. #1

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

    bi小白6天前回复