学习 CALCULATE 函数(一)

file
有位大佬曾经告诉过我,如果你深入理解了CALCULATE,那么你就相当于理解了DAX函数的基础,因为它是DAX函数中最灵活多变,也是适应性最强的函数之一。

CALCULATE的语法结构

DAX=
CALCULATE(<expression>,<filter1>,<filter2>...)

第一参数是计算的表达式,可以进行各种聚合运算

从第二参开始,是一系列的筛选条件,可以为空,如果是多个筛选条件的话,用半角逗号分隔开

返回结果为筛选出所有筛选条件的交集,并根据第一参的表达式计算出相对应的结果

◆ ◆ ◆◆ ◆

如果非要用几个简短的词汇来概括的话,白茶个人的理解就是:聚合、筛选、重新调整上下文条件。(不喜勿喷)

干说没啥意思,咱看下面这个例子:
file

这是事先准备好的示例文件,将其导入PowerBI中,如图:
file

可以看出来,这一部分的销售数据包含着手机、电脑,两种类型。夹杂着不同品牌、不同的售货方式,那么我们该如何对产品数量进行聚合呢?
file

编写如下代码:

数量=
SUM('表'[列])//这里我替换成了示例文件

如下图:
file

呈现结果如图,很明显,我们想要的是分别计算销售和退货,这样才符合我们对销售数量的计算,继续编写如下代码:

销售 =
VAR SQ =
    CALCULATE ( [数量], FILTER ( '表', [条件] = "N" ) ) //这里一样,可以替换成自己的数据
VAR HQ =
    CALCULATE ( [数量], FILTER ( '表', [条件] = "M" ) )
RETURN
    SQ - HQ

file

其结果如下:
file

怎么样,是不是按照我们的要求来了?

file
解释一下代码的意义。

VAR是将变量转换为常量,方便根据外部筛选计算,同时可以节省代码空间;SQ在这里的公式意义是聚合在表中销售方式为“销售”的数量,HQ是聚合“退货”的数量,并且还有在最后进行总数量计算。

在这里就是运用了CALCULATE的第二参筛选,使其符合我们心中的预期计算。(注释:CALCULATE中的参数也可以是常量,常量是不需要嵌套FILTER,只有是变量才需要嵌套。)

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶