首页 > 其他分享 >学习CALCULATE函数(一)修订版

学习CALCULATE函数(一)修订版

时间:2023-07-25 11:06:01浏览次数:38  
标签:聚合 CALCULATE 修订版 计算 VAR 筛选 数量 函数


学习CALCULATE函数(一)修订版_表达式计算

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

CALCULATE的语法结构

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

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

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

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

◆ ◆ ◆◆ ◆

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

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

学习CALCULATE函数(一)修订版_返回结果_02

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

学习CALCULATE函数(一)修订版_大数据_03

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

学习CALCULATE函数(一)修订版_大数据_04

编写如下代码:

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

如下图:

学习CALCULATE函数(一)修订版_返回结果_05

学习CALCULATE函数(一)修订版_返回结果_06

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

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

学习CALCULATE函数(一)修订版_嵌套_07

其结果如下:

学习CALCULATE函数(一)修订版_返回结果_08

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

学习CALCULATE函数(一)修订版_返回结果_09

解释一下代码的意义。

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

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

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


小伙伴们❤GET了么?

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


学习CALCULATE函数(一)修订版_大数据_10

学习CALCULATE函数(一)修订版_表达式计算_11


标签:聚合,CALCULATE,修订版,计算,VAR,筛选,数量,函数
From: https://blog.51cto.com/u_14795990/6843214

相关文章

  • openpyxl模块-------------------------------函数公式应用
    求和代码:#!/usr/bin/envpythonfromopenpyxlimportWorkbookbook=Workbook()sheet=book.activerows=((34,26),(88,36),(24,29),(15,22),(56,13),(76,18))forrowinrows:sheet.append(row)cell=sheet.cell(row=7,column=2)cell.va......
  • PHP输出函数不同之处
    输出打印函数:echo、print、print_r()、printf()、sprintf()、var_dump()、var_export()1)echo、print相同:都不是函数,而是语言结构。可以不用括号无法输出数组不同:echo接受多个参数;print仅接受一个返回值echo没有返回值;print始终返回12)printf()、sprint......
  • 函数周期表丨时间智能丨表丨DATESBETWEEN
    DATESBETWEEN函数DATESBETWEEN函数隶属于“时间智能函数”,属于“表”函数。可以用作生成固定范围的日期,也可以用来作为限定条件来对聚合计算进行限制。在业务需求中,有时候需要将数据与上一阶段的数据进行对比,注意,这里说的是一个阶段,不是一个点;还有一种情况是需要用一段时间的数据作......
  • 函数周期表丨时间智能丨表丨NEXT系列(修订)
    NEXT系列函数NEXT系列一共包含四个函数:NEXTDAY函数,NEXTMONTH函数,NEXTQUARTER函数,NEXTYEAR函数。分别代表次日、次月、次季度、次年。隶属于“表函数”。无论是语法还是用途方面都是比较类似的,统一打包处理!用途1:生成日期表。初始为次日/次月/次季度/次年。用途2:计算相对应范围的数据......
  • 函数周期表丨时间智能丨表丨DATESINPERIOD
    DATESINPERIOD函数DATESINPERIOD函数隶属于“时间智能函数”,属于“表”函数。这个函数的功能很强大,用途方面也是比较广泛的。用途1:可以用来返回固定的日期值。用途2:可以用来算移动平均。用途3:可以算固定日期内的累计值。语法DAX=DATESINPERIOD(<日期列>,<开始日期>,<移动间隔>,<粒......
  • 函数周期表丨时间丨值丨时间类函数
    时间类提取函数本期呢,白茶决定把一部分时间函数放在一块讲了,因为这些函数的作用和函数的语法都是差不多的。包括以下函数:YEAR函数,MONTH函数,DAY函数,HOUR函数,MINUTE函数,SECOND函数。这些函数分别对应咱中国话的年度、月份、日期、小时、分钟、秒。语法这些函数的语法都比较类似。DAX......
  • Python随机函数random使用详解
    在python中用于生成随机数的模块是random,在使用前需要import,下面看下它的用法。random.randomrandom.random()用于生成一个0到1的随机符点数:0<=n<1.0注意: 以下代码在Python3.5下测试通过,python2版本可稍加修改描述random()方法返回随机生成的一个实数,它在(0,1)范围内。......
  • Go defer 去掉闭包函数,靠谱吗?
    在Go中使用defer时,如果defer语句包含了一个闭包函数,需要特别小心。因为defer语句会在函数返回时执行,而闭包函数可能会捕获外部变量,导致意想不到的结果。在Go中,defer语句中的闭包函数捕获的是变量的地址,而不是变量的值。如果闭包函数在defer执行时才被调用,可能会导致捕获的变量值......
  • 实现PS端YOLO网络前向计算函数
    实现PS端YOLO网络前向计算函数目的:在PS端控制PL端完成YOLO网络的前向计算前提:已经实现了YOLO网络参数导入到DDR3的功能创建新文件在Vitis软件中新建两个文件:yolo_accel_ctrl.c和yolo_accel_ctrl.hyolo_accel_ctrl.c用于编写前向计算函数的主体代码yolo_accel_ctrl.h用于......
  • 析构函数虚表指针回填问题
    1问题提出笔者偶然发现对于含有虚函数的类,析构函数也会更新虚表指针。小有所得,特此记录。这里使用vs202232位debug作为实验环境。对于一个有虚函数的类,编译器在生成构造函数时,不只生成我们自己写的虚构函数里面的语句,还会把虚表地址赋值到对象中。比如如下类,构造函数里面根......