dax和m的区别_DAX:一文透彻理解DAX本质

在没有很多教程的情况下,如果一个人的观察力足够强,他会自动串接很多线索,完成逻辑构建,进而实现快速学习的效果。

背后是 观察力,对 细节 的把握和敏感度能力。

在DAX有 迭代器 的说法,但任何文档都不明确写迭代器到底干嘛的

SUMX MAXX FILTER 的多次使用能让人猜到:

1、为什么会有迭代器

2、迭代器的内部逻辑是什么

进而 完全 透彻 彻底 掌握:

1、行上下文

2、EARLIER

3、EARLIEST

之类

DAX 的计算模型:函数

和Excel很多函数不同,必须理解DAX函数内部发生的复杂过程

DAX用函数封装了 循环 之类的逻辑,这些都需要 观察力 猜测 和 实践总结出来。

这个图非常好的显示了DAX的复杂性在哪里

例如:RANKX 就非常贴切的反应了这个图

为什么选择函数作为DAX的计算模型

为什么选择函数作为计算模型,为什么不是类似于Power Query M的形式或者SQL的形式呢。

一种说法是要继承Excel的函数风格,而从程序设计的角度,函数式是更加简单的。

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

DAX计算核心构造及思维主干

这两幅图展示了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( ),就在用公式引擎,他们之间有一个平衡。尽量用存储引擎就会快。

在报告中的每个 单元格 ,都独立执行了以上逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值