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

CALCULATE的语法结构

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

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

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

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

◆ ◆ ◆◆ ◆

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

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

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

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

编写如下代码:

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

如下图:

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

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

其结果如下:

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

解释一下代码的意义。

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

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

这是CALCULATE最经典的用法之一,单条件筛选求和,以后会继续分享学习CALCULATE的其他心得。我是白茶,一个PowerBI的初学者。


小伙伴们❤GET了么?

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

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

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

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

学习CALCULATE函数(一)修订版相关推荐

  1. 空间连接时计算总和_学习CALCULATE函数(六)丨帕累托之累计求和

    (写在前面的话:非常感谢@韭菜大神和@冬神的指点,万分感谢.) 哎,说归说,还是需要继续学习CALCULATE函数,也是蛮无奈的.最近白茶在研究帕累托分析法,本期分享一下帕累托ABC分析法的基础--累 ...

  2. 学习CALCULATE函数(六)丨帕累托之累计求和

    (写在前面的话:非常感谢 @韭菜大神和 @冬神的指点,万分感谢.) 哎,说归说,还是需要继续学习CALCULATE函数,也是蛮无奈的.最近白茶在研究帕累托分析法,本期分享一下帕累托ABC分析法的基础- ...

  3. 学习CALCULATE函数(四)修订版

    生活就像一盒巧克力,你永远不知道下一颗是什么味道.  >                                                     ​--<阿甘正传> ...

  4. 学习CALCULATE函数(五)修订版

    哈喽,小伙伴们,头几次白茶分享了单条件聚合.多条件聚合.各类占比.以点带面聚合,本期呢,咱们继续研究CALCULATE函数. 白茶最近思考了一下,就是CALCULATE函数,为什么它是最灵活的,也是使 ...

  5. 学习CALCULATE函数(二)修订版

    之前呢,白茶分享了一些CALCULATE的心得,但是要知道我们在对数据进行分析的时候,往往是多条件参考的,比如说哪个区域.哪个时间点.哪个状态的销售的最好,这就很明显需要我们在计算的时候把这些选项算进 ...

  6. 精品丨CALCULATE函数进阶版知识

    CALCULATE函数详解 丨基础内容 语法=CALCULATE(<表达式>,<筛选器>,<筛选器>...) 基本用途:根据已有外部上下文构建一个新的上下文进行求值 ...

  7. 20171220-python学习笔记--函数类型

    20171220-python学习笔记--函数类型 备注: #位置参数 #传入两个参数 def power(x, n):s = 1while n > 0:n = n - 1s = s * xre ...

  8. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  9. Python学习之函数返回多个值

    Python学习之函数返回多个值 问题的引出 Python中,一个函数能不能一次返回多个值? 在C语言中,函数最多返回一个值,如果要返回多个值,可以把这些值封装在一个结构体中.注意,C语言不允许函数返 ...

最新文章

  1. 关于mouseenter、mouseover、mouseout、mouseleave的理解
  2. java adt怎么打开项目,如何在Eclipse中打开Android Studio项目?
  3. python数据结构推荐书-腾讯十年Python开发老司机推荐的入门书籍,你确定不看吗?...
  4. 深度解析两种信用评估模型
  5. linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...
  6. sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息
  7. ACM 学习笔记(一) 常用STL讲解
  8. CURL模拟访问网页
  9. ESXi社区版ne1000 VIB驱动的更新
  10. 指数随机变量 泊松过程跳_泊松过程
  11. 代码随想录第六天 LeetCode 242、349、202、1 (哈希表)
  12. Selenium元素定位神器工具谷歌浏览器插件-SelectorsHub介绍、安装和使用
  13. 游戏服务器是什么怎么租用
  14. 数电实验_时分秒计数器——终极版
  15. C# %253A%252F%252F 咋编码
  16. idea-maven父子工程的依赖问题
  17. 自学B站小甲鱼数据结构课程-C语言实现基础数据结构-栈-的例子
  18. 一个简单的数据查询到前端展示总结
  19. renderdoc相关
  20. adb向模拟器传递文件

热门文章

  1. 用 websocket、JQuery开发仿微信聊天
  2. 30005 rust_RUSTJKD超级防锈涂料
  3. ubuntu下定时清理文件
  4. 管理后台-后端-PHP篇
  5. actor 模型原理 (一)
  6. 在centOS中安装以及使用vim编辑器
  7. MySQL查看当前数据库
  8. 有关魅族手机遇到TextView显示异常
  9. 前端导出pdf以及导出内容截断的解决办法
  10. mysql表空间查询