《DAX权威指南》简体笔记 01
《The Definitive Guide to DAX》 (俗称紫皮书。DAX权威指南 或DAX圣经)
The Definitive Guide to DAX: 原作者:SQLBI
翻译:QQ:2889374742 群:Power BI非官方
公众号:零售数据BI-laoliu
前言及内容介绍
我们是Power BI、SQL Server Analysis Services开发团队的一部分,是DAX语言和VertiPaq引擎的作者之一。
我们花了数年时间研究这门语言、优化引擎、找到改进优化器的方法,并尝试将DAX构建成一个简单、干净和健全的语言系统,以使数据分析更容易和更具效率,并为你以及你服务的企业提供前所未有的分析能力。
我们之前曾写过很多关于DAX的文章:关于Power Pivot和SSAS 数据方面的书、博客、专业文章、白皮书以及这本《DAX权威指南》。
事实上,每当我们写这些书的时候,都必须小心翼翼地把内容分配到不同产品的描述上(无论是微软Excel的Powerpivot还是SSAS 数据和DAX语言)。
如此以来,其实总有一种苦涩的感觉:没有足够的篇幅来描述想要说清楚的DAX。毕竟,你不能写1000页关于这类分析的文章:一本如此大内容的书对任何人来说都是令人畏惧的。
因此,在过去的几年中,我们写了关于SSAS 数据和Power pivot的文章,我们把关于DAX的所有内容完全奉献给了这本书。然后避免在下一本书中不需要再为选择什么内容而决策:即想要在本书里解释清所有关于DAX的东西。
在这里,你将无法找到如何创建计算列的描述,也没有用于设置某些列属性的对话框。因为这不是一本讲如何使用PowerBI类基础的书,而是针对DAX语言的一种深入研究,因而,本书从一开始就涉及到如何优化代码和DAX模型的技术细节。
在本书的写作过程中、,我们很精心地编写它 的每一页,反复推敲了很多次里面的内容,并将继续不断修改。
你为什么要读一本关于DAX的比较全面的书?
来吧,其实DAX是如此简单!它看起来很像Excel !
此外,如果你已经学习了其他编程或查询语言,那么,你可能已经习惯了通过查看语法的一些示例来学习这个新的语言,这可能对于理解DAX有帮助,但同时也有可能被其影响而犯错。
DAX是一种强大的语言,它在越来越多的分析工具中被使用。但是它的一些概念,很难通过归纳推理来理解。例如,计算当前行是一个需要使用演绎方法的推断来理解公式逻辑:我们总是从一个理论开始,然后通过几个例子来说明这个理论是如何工作的。
演绎推理是本书所使用的主要方法。我们知道,很多人不喜欢这样去学习,因为他们喜欢更实际的方法:比如学习如何解决具体的业务问题,然后运用经验和实践,最后用自己的归纳推理来理解基础理论。如果你正在寻找这种方法,那么这本书可能并不适合你!
我们写了另一本关于DAX的书,那里面有很多例子,但没有解释为什么一个公式能起作用,或者为什么某种编码方式更好。那本书是复制和粘贴DAX公式的很好的来源。但这本书有一个不同的目的:让你真正掌握DAX。
首先,我们并没有结合一个个具体的问题,但所有的DAX度量都对应相关场景的存在,如果找到了可以在模型中复制使用的公式,这对你是很有好处的。
然而,永远记住,这只是一个附带的功能,而不是DAX实际运用的目标。
最后,一定要阅读任何有关注释,以确保所有示例中使用的代码没有错误。出于学习目的,书中经常采用一些非最佳实践的DAX代码来作为过渡。
本书读者
如果你是DAX的普通用户,那么这本书可能不是你最好的选择。
一方面,许多其他书应该提供有简单的工具介绍学习,以及从DAX以及DAX语言本身基础开始,并达到了一个基本的DAX编程水平的学习过程。我们很清楚这一点,因为我们也写过一些类似的书!
另一方面,如果你对DAX很认真,你真的很想了解它的每一个细节,这本书就是你的需求。这可能是你关于深度理解DAX的第一本书。这种情况下,不应该一开始就期望从最高级的主题中获益。
我们建议你从头到尾读完这本书,然后再接着读最复杂的部分,一旦你获得了一些经验后,一些难于理解的概念很可能就会变得更加清晰。
DAX对于不同的人有不同的用处:
1、Excel用户可以利用Power pivot的 DAX创建数据模型;
2、商业智能(BI)专业人员可能需要在任何规模的BI中写出解决方案的DAX决策度量;
3、Power BI 用户可能需要Power BI模型公式。
本书中,我们试图向所有这些不同需求的人提供相应知识。一些内容(特别是优化部分)可能更针对BI专业人员,因为优化DAX所需的知识非常具有技术性。我们相信,Excel的用户应该能理解DAX表达式的不同性能,从而为他们的模型创建出最好的解决方法。
最后,我们虽然写的是一本书,但又不仅仅只是一本书。在开始的时候,我们尽量保持它的简单,并遵循从0起步到掌握DAX的逻辑路径。
然而,随着学习的概念开始变得复杂时,我们会尝试提高难度。DAX并不是一种简单的语言,我们花了好几年时间才掌握了它,并且了解了引擎的每一个细节。
请不要指望通过随意阅读,就能在几天内学会所有这些内容。
这本书需要你的高度关注。作为期望,我们为DAX提供了前所未有的深度讲解:
让你成为一个真正的DAX专家!
需要你注意的:
我们期望读者对Excel数据透视表有基本的了解,对数据的分析也有一定的经验,这是学习DAX的前提基础。
如果你已经接触过DAX语言,那么最好不过了,因为你会更快地阅读第一部分。当然,你也可以从现在开始认识DAX。
该书中有一些对MDX和SQL代码的引用,但并不真正需要你必须了解这些语言。因为只是将它们与DAX语言对比,可能因为它们在表达式的编写方式上的相似之处,而对理解某个内容有帮助或存在关联。如果不理解这些代码,那也没有关系,这只意味着仅仅这个特定的主题不适合你而已。
在本书最高级的部分,我们讨论了引擎一一并行性和内存访问、CPU使用、以及其他一些非常令人厌倦的话题,很多人可能并不熟悉这些。
任何开发者都会觉得自己有这方面的需要,而Excel的用户可能有点害怕。然而,当谈到优化的时候,这些知识却又是必需的。
因此,本书最高级的部分是针对BI开发人员而非Excel用户。然而,我们认为每个人都可以阅读并将受益于这些内容。
本书内容
这本书的设计初衷是为了从简单的引导性章节再到复杂的章节,以一种合乎逻辑的方式来进行逐步深入讲解。
每一章都存在一个前提:即在之前的内容被完全理解的前提下进行,前面已解释的概念后面几乎不会再重复。因此,我们强烈建议你从头阅读到尾,避免过早地跳转到更高级的章节。
一旦你第一次读到它,它就会成为有用的参考资料:例如,如果你对某个函数(比如ALLSELECTED)的用法有疑惑,那么你就可以直接跳到该部分,并帮助你阐明你的想法。然而,阅读某一节内容而不理解之前的内容可能会导致一些挫折,或者更糟的是,对概念的更加不理解。
说到这里,介绍本书的目录内容:
第1章 对DAX的简要介绍,对已经掌握了其他语言(SQL、Excel或MDX)的用户进行了一些介绍。我们在这里没有引入任何新概念,只是给出一些关于DAX和其他可能被读者了解的语言之间的区别提示与解释。
第2章 介绍了什么是DAX语言。并讨论DAX的基本概念:如计算列、度量、错误处理函数等,并列出了DAX语言的大部分基本功能。
第3章 主要介绍一些基本的列表函数。在DAX的诸多函数中,列表和返回的任何一个结果列表(都指代列表)。本章中,介绍了列表最基本的功能,而在第9章中将介绍列表的一些高级功能。
第4章 对列表筛选的描述。计算环境是DAX语言的基础,这一章,以及下一章,可能是整本书中最重要的部分。
第5章 只讨论两个函数:CALCULATE 和CALCULATETABLE。它们代表了DAX最重要的功能,要了解它们,很大程度上依赖于对CALCULATE筛选的良好理解。
第6章 包含了一些DAX代码的例子。但是,不应该只把它看作是一组可以复制利用的公式。相反,我们展示了如何使用到目前为止学到的一些基本知识,来解决一些常见的运用场景。
第7章 深入讨论了时间智能计算。例如年初至今,上年累计,以周为单位的时期,以及自定义日历表等,这些都是本章所涵盖的部分内容。
第8章 专门介绍了统计函数计算,如排名、财务计算和百分位数等。
第9章 在第三章介绍了基本列表函数的基础上,作为延续,在这一章中,将详细地解释各种操作列表的DAX函数,这些函数在编写DAX查询时非常有用。
第10章 进一步介绍了DAX的两大重点:计算以及筛选,并讨论了一些复杂的公式,例如ALLSELECTED和KEEPFILTERS,以及借助列表组合(扩展表)的理论。这是一个有难度的章节,它揭示了复杂的DAX表达式的大部分秘密。
第11章 展示了如何使用DAX来计算层次结构以及如何处理父/子结构。
第12章 是关于解决DAX函数中的非物理(编者注:是否为虚拟?)关系。事实上,DAX借助数据模型可以定义出任何一种关系。本章中,展示了列表关系的多类种型。这是有关DAX语言的最后一章:本书的其余部分还包括DAX的优化技巧等知识。
第13章 详细描述了VertiPaq引擎:它是最常见的数据库引擎,所有DAX在VertiPaq引擎上运行。了解如何使用DAX函数依赖VertiPaq引擎获得最佳表现是至关重要的。
第14章 延续第13章的知识,展示了可以在数据模型级别应用的一些可能的优化。当要规范DAX的时候,考虑如何减少列的基数,以及什么样的关系可以达到最佳性能以及降低内存使用量等。
第15章 介绍了如何阅读查询列表的公式(度量公式)和方式,以及如何借助SQL Server Profiler和DAX Studio等工具对DAX查询计算的性能进行检测。
第16章 基于前几章的优化内容,给出了几种可能的优化方法。展示了多个DAX表达式实例,并测量它们的性能,然后展示和解释优化后的公式。
本书的配套内容可从以下页面下载:
http://aka,ms/GuidetoDAX/files
它们包括以下内容:
(1)一个从SQL Server备份的Contoso Retail DW数据库,可以使用它自己构建实例。这是微软提供的一个标准演示数据库,我们用一些视图充实了它,使它更容易在上面创建一个实用的数据模型。
(2)用来生成书中所有数据的Power BI Desktop模型。所采用的数据库始终是相同的,然后每一章都有一个文档,显示了我们在本书中使用的相同示例里所需要的步骤(复制)。你可以使用这些数据来维护数据模型。