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

学习CALCULATE函数(二)修订版

时间:2023-07-25 11:07:34浏览次数:31  
标签:CALCULATE SQ FILTER 修订版 条件 VAR 筛选 函数


学习CALCULATE函数(二)修订版_人工智能

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

在纸上计算很容易,但是DAX中如何进行呢?

学习CALCULATE函数(二)修订版_数据_02

来,看下面的例子:

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

这是我们在上一期使用的示例文件,现在我添加了一个下面的维度表:

学习CALCULATE函数(二)修订版_人工智能_04

这样的话昨天我们的计算公式就有了很大的调整空间。

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

这是我们昨天编写的代码,用途是区分开销售与退货的情况,但是现在我想计算包含产品类别的销售与退货,该如何处理呢?

编写如下代码:

首先是基础的销售聚合代码。

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

学习CALCULATE函数(二)修订版_大数据_05

接下来就开始编写我们的代码:

双条件筛选 =
VAR SA =
    CALCULATE ( [数量], FILTER ( '表', [筛选项] = "M" && [筛选项] = "L" ) ) //这里的话自己调整数据
VAR SQ =
    CALCULATE ( [数量], FILTER ( '表', [筛选项] = "N" && [筛选项] = "L" ) )
RETURN
    SA - SQ

如下图:

学习CALCULATE函数(二)修订版_人工智能_06

计算一张销售表中,分类属于手机的销售与退货情况,其结果如下:

学习CALCULATE函数(二)修订版_大数据_07

结果一目了然,这里解释一下代码含义:

CALCULATE([求和项],这一部分是最终结果的表达式,也就是说无论后面条件怎么样,都是为了这个求和项准备的。

FILTER(‘表’,是为了筛选符合我们要求的有效值。

[条件项]=“M”,是为了选出符合我们要求的有效值。

&&,这是微软的标准连接字符,表示“并且”的意思,可以与AND替换。

怎么样,是不是这么拆分着说好理解多了?

学习CALCULATE函数(二)修订版_人工智能_08

学习CALCULATE函数(二)修订版_人工智能_09

来,继续我们的例题,还没结束。我现在想知道手机的销售有哪些停产了?这个代码如何进行?来,继续:

学习CALCULATE函数(二)修订版_人工智能_10

首先在模型关系中确立二者的联系。

编写如下代码:

双条件三条件 =
VAR SA =
    CALCULATE (
        [聚合项],
        FILTER ( '表1', [条件项1] = "M" && [条件项1] = "L" ),
        FILTER ( '表2', [条件项2] = "S" )
    )
VAR SQ =
    CALCULATE (
        [聚合项],
        FILTER ( '表1', [条件项1] = "N" && [条件项1] = "L" ),
        FILTER ( '表2', [条件项2] = "S" )
    )
RETURN
    SA - SQ

如图:

学习CALCULATE函数(二)修订版_人工智能_11

结果如下:

学习CALCULATE函数(二)修订版_人工智能_12

是不是达到我们的要求了?

说一下原理,原则上CALCULATE并没有限制筛选条件的数量,理论上是无限的。



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


学习CALCULATE函数(二)修订版_大数据_13

学习CALCULATE函数(二)修订版_人工智能_14

标签:CALCULATE,SQ,FILTER,修订版,条件,VAR,筛选,函数
From: https://blog.51cto.com/u_14795990/6843202

相关文章

  • 函数周期表丨时间丨表丨CALENDAR
    CALENDAR函数语法=CALENDAR(<开始日期>,<结束日期>)CALENDAR函数,属于常用的**“表函数”**之一,一般用于生成日期维度。也可以用来构建虚拟的日期表进行计算。参数第一参数:开始日期。第二参数:结束日期。返回结果一个具有单个“日期列”表,这个日期列包含开始与结束日期。并且是连续......
  • 函数周期表丨时间丨值丨DATE
    DATE函数语法=DATE(<年>,<月>,<日>)DATE函数,属于“值函数”之一,返回某个具体的日期。用的频率不是特别的高,一般用来限定时间使用,比如说从哪一天开始,或者哪一天结束。参数第一参数:年。通常情况下,年份这一项一般情况都是需要输入四位数,并且日期要大于1900年3月1日以后的日期。如果......
  • 学习CALCULATE函数(一)修订版
    有位大佬曾经告诉过我,如果你深入理解了CALCULATE,那么你就相当于理解了DAX函数的基础,因为它是DAX函数中最灵活多变,也是适应性最强的函数之一。CALCULATE的语法结构DAX=CALCULATE(<expression>,<filter1>,<filter2>...)第一参数是计算的表达式,可以进行各种聚合运算从第二参开始,是一......
  • 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)范围内。......