TOP

DAX-第 2 课。CALCULATE 函数

描述

开始学习DAX的第一个函数是CALCULATE。该函数在 Excel 中没有精确对应的函数,但它与函数相当 SUMIFS COUNTIFS 。简而言之,该函数将过滤器应用于其他计算函数,因此我们可以仅选择并包含我们需要的数据。

函数 CALCULATE() 的语法

=计算(< 统计表达 >、< 过滤器1 >、< 过滤器2 >, ...)

< 统计表达 >

统计表达 应该返回计算结果(一个值,而不是一个表)。因此,这种设置中经常使用该类型的统计函数 SUM , 最小 , 最大限度 , 反排 ETC。

  1. SUM([ 栏目名称 ])
  2. SUM([ 名称Column1 ]) / 最大限度([ 名称Columns2 ])
  3. 另一个计算字段的名称(度量)

< 过滤器1 >、< 过滤器2 >, ...

筛选 定义要处理的数据范围。此处指定选择值的条件。

  1. [ 栏目名称 ] = 汽车
  2. [ 栏目名称 ] >= 6
  3. ALL( '表名' 或者 ALL( '表名' [ 栏目名称 ]
  4. FILTE '表名' , '表名' [ 栏目名称 ] =“ 绿色的 ”)

假设我们有这样一个表,它的名字叫 Demo 并加载到 PowerPivot

让我们基于它创建一个汇总表并统计每个产品的记录数。

现在让我们创建一个新的计算字段 (Measure) 数据透视表中的 Count_All_Product,它将显示所有行的记录总数。

我们如何获得计算字段 Count_All_Product 中的数字 16 ?解释是,我们使用该函数删除了该字段在数据透视表中应用的所有过滤器(数据透视表中的每一行都是一个单独的过滤器) ALL() 。换句话说,就是一个函数 ALL (Demo 给出命令删除应用于表的计算字段 Count_All_Product 的所有过滤器 Demo

让我们添加另一个字段 (City) 按行查看每种产品按城市的销售额:

我们看到数字在字段中 Count of Rows 更改,但不在计算字段 Count_All_Product 中。这是正确的,因为对于最后一个,我们删除了公式中的所有过滤器。现在让我们对公式进行一些微小的更改并查看结果。

=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))

我们通过替换来更改 ALL() 函数的参数 DemoDemo[Product] 。现在不会删除整个表的过滤器 Demo ,但仅限于其列 Demo[Product]

所以我们看看球场上发生了什么 Count of Rows 过滤器生效 ProductCity ,并且仅对计算字段 Count_All_Product 进行筛选 City