CALCULATE的语法结构
语法:
CALCULATE(,,…)
第一个参数是计算表达式,可以执行各种聚合运算
从第二个参数开始,是一系列筛选条件,可以为空;如果多个筛选条件,用逗号分隔
所有晒选条件的交集形成最终的筛选数据集合
根据筛选出的数据集合执行第一个参数的聚合运算并返回运算结果
前文提到DAX函数可以更改外部上下文,现在通过实例来理解DAX中最精髓的函数CALCULATE的计算原理,并看看它是如何更改外部上下文的。
01 | 筛选条件为空,不影响外部上下文
现在开始用CALCULATE函数创建一个度量值:
产品数量1 = CALCULATE([产品数量])
02 | 添加限制条件,缩小上下文
建一个度量值[产品数量2],
产品数量2 = CALCULATE([产品数量],'产品明细'[品牌]="苹果")
03 | 结合ALL函数,扩大上下文
新建度量值[产品数量3],
产品数量3 = CALCULATE([产品数量],ALL('产品明细'))
04 | 重置上下文
新建度量值[产品数量4],
产品数量4 = CALCULATE([产品数量],
all('产品明细'[产品名称]),
'产品明细'[类别]="")
先用ALL函数清除外部上下文,然后又新增了一个筛选条件,类别为"手机"的产品数量.
通过从第二个参数开始的筛选条件,得到一个数据集合,并利用第一个参数执行聚合运算,这不就是DAX要实现的功能:提取有用数据并执行聚合运算吗,所以说CALCULATE几乎就是DAX本身,它就是实现DAX功能的引擎,并能灵活的操控外部上下文,后面的数据分析也都离不开CALCULATE的身影。
暂无数据