本书是微软DAX语言在商业智能分析、数据建模和数据分析方面的指南。通过对本书的学习,你将了解如何使用DAX语言进行商业智能分析、数据建模和数据分析;你将掌握从基础表函数到高级代码,以及模型优化的所有内容;你将确切了解在运行DAX表达式时,引擎内部所执行的操作,并利用这些知识编写可以高速运行且健壮的代码。本书第2版的重点内容包括基于免费的Power BI Desktop来构建和运行示例,帮助你在Power Bl、SQL Server Analysis Services或Excel中充分利用强大的变量(VAR)语法。你想要使用DAX所有的强大功能吗?那么这本未进行任何删减、深入浅出的著作正是你所需要的。
本书适合Excel高级用户、商业智能分析人员、使用DAX和微软分析工具的专业人士。
DAX语言经典教材
资深微软BI专家打造
微软出版社官方出品
译者序:欢迎来到DAX的世界
你好!我是本书的译者,高飞。
很高兴你打开了这本书,很荣幸由我来为你转述关于DAX语言的所有秘密。
我猜你已经用过Excel Power Pivot、Power BI或者SQL Server Analysis Services,并且惊叹于它强大的数据存储和运算能力。没错,在这些工具中,你都可以使用DAX对数百万、上千万行甚至更多的数据展开灵活的分析,这是一门跨Excel、商业智能和企业级工具的分析语言。
DAX就像它的全称Data Analysis eXpression所描述的那样,是一门用于数据分析的函数式语言。是的,DAX和我们所熟悉的Excel公式都是基于函数的表达式,为了便于用户快速上手,DAX中的很多函数都直接照搬自Excel。所以,只要你熟悉Excel,DAX便会让你产生一种亲切感,甚至可以快速实现一些常见的计算。
但是这种便利性仅限于起步阶段。DAX与大多数编程语言不同,它有很多独特且重要的理论,比如计值上下文、迭代和上下文转换等,理解这些概念是决定你能否掌握DAX的关键。相信这也正是你打开本书的原因。The Definitive Guide to DAX: Business intelligence with Microsoft Power BI, SQL Server Analysis Services, and Excel在全球被奉为学习DAX的经典书目,其权威程度超过微软官方文档。它的知识框架足够系统和全面,在广度和深度这两个层面,都是当之无愧的NO.1。可以说,读懂了这本书,你就“解锁”了DAX的所有秘密。
DAX由微软的SQL Server Analysis Services团队开发,作为代号Gemini项目的一部分,在2009年与PowerPivot for Excel 2010插件一起发布。当时微软敏锐地觉察到了自助分析的浪潮即将到来,其基于自身在数据库领域的深厚积累,在MDX、SQL和Excel公式的基础上开发出了全新的DAX语言。随着大数据时代的到来和商业智能产品的流行,这项投入被证明是极富远见的。在本书中,我荣幸地邀请到了目前担任微软首席工程经理,同时也是开发DAX编程语言和查询处理器的主导人物——Jeffrey Wang为本书作序。
在翻译本书的过程中,我多次与两位作者Marco Russo和Alberto Ferrari通过邮件往来,询问技术细节和甄别勘误,两位作者的热情和耐心给我留下了深刻的印象。在他们的帮助下,本书中文版本修订了原著中的多处错误,相信在全球范围内,本书中文版很可能是目前质量最好的一个版本。
在此,我要感谢电子工业出版社的编辑王静老师的信任和支持。很多读者可能不知道,本书的翻译工作始于2017年夏天,我利用业余时间,花了一年多完成了本书第1版的翻译。巧合的是,此时本书第2版也传来了即将发布的消息,我们经过短暂的商议决定放弃已经翻译好的第1版,继续翻译第2版,于是,又是一年多的时间,这一轮横跨4年,两个版本的漫长翻译工作才终于落下帷幕。
坦白地讲,翻译工作本身是枯燥的,尤其是面对这么一本大部头的技术型著作,唯一能让我坚持下去的动力就是它给读者们带来的价值。所以,虽然道阻且长,我却始终不敢掉以轻心。为了保证所有章节在行文和逻辑方面的一致性和准确性,全书由我一人翻译完成,这样可以最大程度地保证翻译质量,但是这也意味着要付出更多的时间。感谢各位读者的理解和等待。在此,也要感谢所有参与校对工作的编辑们,你们的付出进一步提高了本书的质量。
Power BI和DAX的流行离不开用户的无私分享和社区的壮大,在国内,很多微软热心人士、企业和Power BI爱好者都为此贡献了自己的力量,在我的心目中有一个长长的感谢名单,因篇幅所限,无法在此一一列举,谨邀请其中两位微软MVP:敏捷艾科创始人,Power BI可视化比赛的推动者赵文超和ExcelHome创始人周庆麟老师为本书作序,以表感谢。
最后,我必须要郑重感谢的一个人是我的老婆,正是你的支持和鼓励,允许我占用属于周末和节假日的二人时间,我才得以完成这项浩大的工程。
由于水平所限,书中难免会有不合理甚至错误之处,欢迎读者朋友批评与指正。如果你对这本书有任何疑问,可以访问“Power BI极客”(powerbigeek)网站的DAX圣经专区留下你的宝贵意见。
现在,DAX的旅程即将开始,你准备好了吗?
高飞
2021年1月于 上海
前 言
也许你不知道我们的名字。但你在日常工作中使用的软件都出自我们编写的代码:,如Power BI、Excel Power Pivot、SQL Server Analysis Services……等,都出自我们编写的代码。是的,我们是DAX语言和VertiPaq引擎的幕后作者。
你在本书中学习的语言是我们创造的。我们花费数年来研究这门语言,优化引擎,寻找改进优化器的方法,并试图将DAX构建为一种简单、干净、合理的语言,以使身为数据分析师的你工作得更加轻松、更加高效。
但是,这只是本书的前言,就别再谈论自己我们了!为什么我们要为Marco和Alberto,这些来自SQLBI的家伙写出版的书作序呢?因为当你开始学习DAX时,你只需要在网上点击几下就能找到他们写的文章。当你开始阅读他们的著作,学习DAX时,希望也能感谢我们的辛勤工作。多年前我们曾经会过面过,Marco和Alberto对SQL Server Analysis Services的深入了解让我们非常钦佩。在DAX诞生初期,他们是第一批学习并使用这种新引擎和语言的人。
他们发表的文章、论文和博客,成为成千上万人学习的源泉。虽然我们虽然编写了代码,但是却我们没有太多时间教人们如何使用它,他们才是传播DAX知识的传播者人。
Alberto 和 Marco的著作一直都是在这个领域一直都很的畅销书,现在,有了这本全新的DAX指南,他们真正创作出了一本关于我们创造作和热爱的语言的里程碑式出版物。我们编写代码,他们撰写书,你学习DAX并为你的企业提供前所未有的分析能力。我们喜欢这种方式:我们、他们和你像一个团队一样紧密工作,从数据中获得更好的见解。
Marius Dumitru,架构师,Power BI首席技术官办公室
Cristian Petculescu,Power BI首席架构师
Jeffrey Wang,首席软件工程师
Christian Wade,高级项目经理
网盘文件失效,请帮忙维护,书背面的二维码,扫出来企业微信,也无法添加
书背面的二维码,扫出来企业微信,也无法添加
网盘文件失效,请帮忙维护,谢谢
书本306页《理解values和filters函数的区别》书中例子中values返回2种颜色,而filters会返回所有被4种颜色。由于附件中没有对应的这个例子,我按书中测试了一下,结果values和filters都返回两种颜色。我又单独做了一个例子测试这两个函数。不知道我做的例子有没有按照作者的意思做的,望指正我理解上的偏差。
![数据 数据](http://download.broadview.com.cn/Original/240937be52e6c0bedfb0)
![结果图 结果图](http://download.broadview.com.cn/Original/2409658b99c576992b39)
![切片器班级未选结果图 切片器班级未选结果图](http://download.broadview.com.cn/Original/2409cf1a0494608ae387)
数据如下:
在报表中添加切片器班级和切片器姓名
两个度量值分别为:filtersname = CONCATENATEX(FILTERS(Sheet2[姓名]),Sheet2[姓名],”,”,Sheet2[姓名],ASC)和valuesname = CONCATENATEX(VALUES(Sheet2[姓名]),Sheet2[姓名],”,”,Sheet2[姓名],ASC)
结果如图:
在姓名的切片器中全选了4个名字,但是filtersname这个度量值的可见值应该受到班级切片器的影响,只能有三个值。如果姓名切片器不选,切片器可见值只有2个,但是filtersname的值却是4个。
如图:
望指正我的疑惑,谢谢。
147 页 解释说,计算错误 跟重复行多少有关系,这个解释有点勉强啊,不理解。