学习 CALCULATE 函数(一)
有位大佬曾经告诉过我,如果你深入理解了CALCULATE,那么你就相当于理解了DAX函数的基础,因为它是DAX函数中最灵活多变,也是适应性最强的函数之一。
CALCULATE的语法结构
powerbi官方电脑版下载
DAX=
CALCULATE(<expression>,<filter1>,<filter2>...)
第一参数是计算的表达式,可以进行各种聚合运算
从第二参开始,是一系列的筛选条件,可以为空,如果是多个筛选条件的话,用半角逗号分隔开
返回结果为筛选出所有筛选条件的交集,并根据第一参的表达式计算出相对应的结果
◆◆◆◆◆
如果非要用几个简短的词汇来概括的话,白茶个人的理解就是:聚合、筛选、重新调整上下文条件。(不喜勿喷)
干说没啥意思,咱看下面这个例子:
这是事先准备好的示例文件,将其导入PowerBI中,如图:
可以看出来,这一部分的销售数据包含着手机、电脑,两种类型。夹杂着不同品牌、不同的售货方式,那么我们该如何对产品数量进行聚合呢?
编写如下代码:
数量=
SUM('表'[列])//这里我替换成了示例文件
如下图:
呈现结果如图,很明显,我们想要的是分别计算销售和退货,这样才符合我们对销售数量的计算,继续编写如下代码:
销售 =
VAR SQ =
CALCULATE ( [数量], FILTER ( '表', [条件] = "N" ) ) //这里一样,可以替换成自己的数据
VAR HQ =
CALCULATE ( [数量], FILTER ( '表', [条件] = "M" ) )
RETURN
SQ - HQ
其结果如下:
怎么样,是不是按照我们的要求来了?
解释一下代码的意义。
VAR是将变量转换为常量,方便根据外部筛选计算,同时可以节省代码空间;SQ在这里的公式意义是聚合在表中销售方式为“销售”的数量,HQ是聚合“退货”的数量,并且还有在最后进行总数量计算。
在这里就是运用了CALCULATE的第二参筛选,使其符合我们心中的预期计算。(注释:CALCULATE中的参数也可以是常量,常量是不需要嵌套FILTER,只有是变量才需要嵌套。)