DAX--CALCULATE函数的运行机制

一.CALCULATE语法如下:
CALCULATE( , , … )

二.前头写明,CALCULATE的运行机制可以归纳如下:

1.CALCULATE 函数基于当前上下文应用第二个参数起( , …)所有筛选器对(计算字段)每个单元格使用第一个参数进行计算。
2.每个筛选器可以是对单列或多列的。
3.每列都在 CALCULATE 函数的等效 FILTER 表达式中独立计算。
4.如果 CALCULATE 函数的等效 FILTER 表达式对某列存在筛选,这将覆盖 / 替换当前筛选上下文位于该列的筛选器(例如透视表的筛选)。
5.如果等效 FILTER 表达式返回多列,每一列都有独立的结果。
6.如果某列在不同的等效 FILTER 表达式结果中均有返回,该列的最终筛选结果是交集。
7.在所有等效 FILTER 计算后,这些被筛选的列的交集形成了 CALCULATE 第一个参数计算的上下文。
三.测试前准备工作:

DAX--CALCULATE函数的运行机制_第1张图片
0.png

DAX--CALCULATE函数的运行机制_第2张图片
1.png
DAX--CALCULATE函数的运行机制_第3张图片
2.png

DAX--CALCULATE函数的运行机制_第4张图片
3.png

四.开始查看calculate的特性:
all函数清除Name列的筛选,但是Color列的筛选还是存在的
DAX--CALCULATE函数的运行机制_第5张图片
4.png

第二个布尔表达式的过滤条件覆盖了透视表的筛选条件,选出Car
DAX--CALCULATE函数的运行机制_第6张图片
5.png

两个布尔表达式过滤条件的交集
DAX--CALCULATE函数的运行机制_第7张图片
6.png

前面两个布尔表达式过滤条件的等效写法
DAX--CALCULATE函数的运行机制_第8张图片
7.png

Color列的筛选被替换,选出Green,人名和Green共同筛选出结果
DAX--CALCULATE函数的运行机制_第9张图片
8.png

前面等效的公式写法
DAX--CALCULATE函数的运行机制_第10张图片
9.png

利用values函数保持透视表的筛选上下文
DAX--CALCULATE函数的运行机制_第11张图片
10.png

filter和values两个过滤条件筛选结果的交集
DAX--CALCULATE函数的运行机制_第12张图片
11.png

all('Demo')清除整张表的筛选条件,透视表的人名和颜色实际上都被清除覆盖为Green
DAX--CALCULATE函数的运行机制_第13张图片
12.png

filter的第一个参数是整张表,将保持整个透视表的筛选环境
DAX--CALCULATE函数的运行机制_第14张图片
13.png

filter保持整张表的筛选环境,再增加条件,得出筛选结果的交集
DAX--CALCULATE函数的运行机制_第15张图片
14.png

前面公式的等效写法
DAX--CALCULATE函数的运行机制_第16张图片
15.png

你可能感兴趣的:(DAX--CALCULATE函数的运行机制)