DAX:一文透彻理解DAX本质

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DAX:一文透彻理解DAX本质相关的知识,希望对你有一定的参考价值。

参考技术A

在没有很多教程的情况下,如果一个人的观察力足够强,他会自动串接很多线索,完成逻辑构建,进而实现快速学习的效果。
背后是 观察力,对 细节 的把握和敏感度能力。

在DAX有 迭代器 的说法,但任何文档都不明确写迭代器到底干嘛的
SUMX MAXX FILTER 的多次使用能让人猜到:
1、为什么会有迭代器
2、迭代器的内部逻辑是什么

进而 完全 透彻 彻底 掌握:
1、行上下文
2、EARLIER
3、EARLIEST
之类

和Excel很多函数不同,必须理解DAX函数内部发生的复杂过程
DAX用函数封装了 循环 之类的逻辑,这些都需要 观察力 猜测 和 实践总结出来。

这个图非常好的显示了DAX的复杂性在哪里
例如:RANKX 就非常贴切的反应了这个图

为什么选择函数作为计算模型,为什么不是类似于Power Query M的形式或者SQL的形式呢。
一种说法是要继承Excel的函数风格,而从程序设计的角度,函数式是更加简单的。

可以看出函数式语言的结构是最简单的,但带来的直接问题就是要清楚 在函数内部到底发生什么

这两幅图展示了DAX所有原理性基础,用3种构造( 列 值 表 ) 和 1 种计算模式( 函数 )完成DAX所有功能。

DAX 默认计算思维主干:选表,连接,过滤,聚合。这条思路可以解决90%的问题,也可以用到DAX的超强性能。凡是不能充分符合这个主干的,都由DAX 公式引擎实现,但也会降低很大性能。

类似于SQL:
1、选表 from t1,t2
2、连接 where [图片上传失败...(image-f8eea6-1520408116046)]

t1.id = t2.ref_id
3、过滤 where x > a
4、分组 group by x
5、聚合 sum

把这个主干直接用DAX写出:
CALCULATE:
1、选表 FactSales ,DimCategory,DimCustomer(扩展表原理以及已有连接)
2、连接 USERELATION
3、过滤 FILTER( )
4、分组 SUMMARIZE( )
5、聚合 SUMX

得到结果。

所有的度量值,按照这种逻辑统一设计,就会用到DAX存储引擎;复杂逻辑超过这个范围,例如:IF( ),就在用公式引擎,他们之间有一个平衡。尽量用存储引擎就会快。
在报告中的每个 单元格 ,都独立执行了以上逻辑。

SQL BI出品:DAX.Guide - DAX函数在线速查

今天,Marco在SQL BI上发布了一个全新产品,一个独立的DAX函数索引网站:DAX.Guide.

这是一个花费数月开发上线的产品,也许你说过或者正在看 《The Definitive Guide to DAX》,它是目前唯一一本全面、系统、详细的阐述DAX的著作,在中文世界里,我们称它为DAX圣经。但不要误会,DAX Guide并不是圣经的在线版,正如名字中没有了Definitive,它强调的不是系统深入、而是简单易用。这是一个专门提供DAX函数索引的网站,供你快速、方便的查阅所有DAX函数。


关于 DAX Guide:


1. DAX Guide是什么?

DAX指南是一个提供完整DAX索引的网站。每个函数都有完整的语法、简短的描述以及介绍相关函数和文章的链接。


2. DAX Guide是学习DAX的教程吗?

不,DAX指南不是用来作为学习工具的。DAX指南的目标是提供一个方便快速查询的参考资料,我们承诺对网站的内容质量负责。


3. DAX指南有何独到之处?

通过监控微软的产品更新,DAX指南会自动更新。指南为每个DAX函数维护一个兼容矩阵,用于告知其适用的所有产品和相应的版本号。并且,还额外标记了哪些函数具备上下文转换的功能,哪些参数在行上下文中执行,哪些函数是已经过时的或弃用的(在我们看来)。

SQL BI出品:DAX.Guide - DAX函数在线速查


4. DAX Guide是谁制作的?

为了保证高质量,DAX指南的内容仅由一小部分作者参与策划。


5. 是否可以向DAX Guide提交额外的内容?

是的。如果在DAX指南中发现任何错误,请使用页面上的贡献按钮提交。其他建议也同样受欢迎。


目前DAX Guide上维护了275个函数,其中有的尚未在官方文档中披露。

每个函数的基本描述主要来自MSDN,指南中包含的每个语句都经过了验证。与MSDN相比,指南的内容更为精简,当你想了解更多内容的时候,指南也提供指向MSDN和SQLBI相关资料的链接。并且,团队对MSDN中的错误内容做了过滤,不会进入指南。


DAX指南不是Wiki,它的内容是分类的、体系化的,并且在未来有可能演变成服务。

SQL BI出品:DAX.Guide - DAX函数在线速查



我需要一个关于DAX函数的完整索引,它要容易访问,易于使用,


能为每个DAX函数的提供关于上下文转换和行上下文的准确信息,


多年来,我一直想要这样的一个DAX指南,现在它终于来了,我很高兴能和你分享。


                                                                                                              ——  Marco Russo



感谢Marco 和所有作者

以上是关于DAX:一文透彻理解DAX本质的主要内容,如果未能解决你的问题,请参考以下文章

数据可视化之DAX篇(二十二)一文搞懂Power BI中的排名问题

数据可视化之DAX篇(二十一)连接表的几个DAX函数,一次全掌握

Power Pivot 系列 (4) - DAX 查询

DAX基础入门 – 30分钟从SQL到DAX — PowerBI 利器

DAX从入门到精通 5-1 理解calculate

数据可视化之DAX篇(二十)Think in DAX 之报表自动化实践