正在准备一个全新内容,从而验证喜乐君分析框架的普适性。全新视角看DAX:课程 博客同步要点:
- DAX Guide-1-分析的本质与Measure 2024/09
- Dax Guide-2-为分析而“准备”与Column 2023/9
- DAX Guide-3-“百变”筛选FILTER与计算优先级 2023/9 V1
希望进一步了解,欢迎观看系列视频:
【B 站课堂】DAX 别裁新解 https://www.bilibili.com/cheese/play/ss8780?bsource=link_copy
该视频系列在2024年7月第三遍录制,增加了SQL 对比,增加了诠释深度
一、区分分析计算的两个阶段
实例:各年度的销售数量总和
SQL是编程语言,它天然有优先级概念,所以在select查询中,可以同时出现year函数和sum函数。

但是在DAX中,类似的逻辑就会出错。为此,我们必须明确地区分何为问题中的计算,何为预先在数据表明细行的计算。

在DAX中,于是就有了Calculated Column的概念,以新功能的方式,强制指定它的计算必须相当于明细表而有意义,在它之后,才能完成问题阶段的分组聚合。正因为此,calculated Column的计算结果,可以在问题中承担任意角色——不管是筛选、分组字段,还是作为聚合对象。
二、DAX的计算列语法
也就是说,DAX的Calculated Column,相当于以功能的方式,强调了优先级的先后次序,弥补了函数语言先天性不足。
如下所示,可以先定义一个计算列,它会先于summarizecolumn而计算。

如果把上面的Column改完VAR变量,可以吗? 如下所示,运行会出错。大家可以评论一下为什么。

三、如何区分“预先计算”与“临时计算”
怎样的计算是在明细表中预先完成的,怎样是在视图中按需完成?
这是通往计算优先级的关键之一。
……
四、问题分析:聚合是本质
Measure 是分析的点睛之笔。
……
喜乐君 V0.2