CALCULATE 函数

在指定筛选器修改的上下文中计算表达式。

语法

CALCULATE(<expression>,<filter1>,<filter2>…)

参数

术语

定义

expression

要进行计算的表达式。

filter1,filter2,…

(可选)逗号分隔的表达式列表,这些表达式是定义筛选器的布尔表达式或表表达式。

用作第一个参数的表达式在本质上与度量值相同。

下列限制适用于用作参数的布尔表达式:

  • 表达式不能引用度量值。

  • 表达式不能使用嵌套的 CALCULATE 函数。

  • 表达式不能使用扫描表或返回表的任何函数,包括聚合函数。

但是,布尔表达式可以使用查找单个值或计算标量值的任何函数。

返回值

作为表达式的结果的值。

注释

如果已筛选数据,则 CALCULATE 函数将更改筛选数据的上下文,并且在您指定的新上下文中计算表达式。 对于在筛选器参数中使用的每一列,将删除该列上的现有筛选器,改为应用在筛选器参数中使用的筛选器。

示例

为了计算当前分销商销售额与所有分销商销售额的比率,您向数据透视表添加一个度量值,该度量值首先计算当前单元的销售额的总和(分子),然后用该总和除以所有分销商的总销售额(分母)。 为了确保不管数据透视表是如何筛选数据或对数据进行分组的,分母都保持相同,表示分母的公式部分必须使用 ALL 函数来清除所有筛选器并且创建正确的合计。

下表显示在通过使用代码部分中的公式创建名为 All Reseller Sales Ratio 的新度量值时的结果。

为了阐释其工作方式,向该数据透视表的**“行标签”区域添加字段 CalendarYear,向该数据透视表的“列标签”区域添加字段 ProductCategoryName。 然后向该数据透视表的“值”**区域添加新度量值。 为了将数字显示为百分比,将百分比数字格式应用于包含新度量值 All Reseller Sales Ratio 的数据透视表区域。

所有分销商销售额

列标签

 

 

 

 

行标签

Accessories

Bikes

Clothing

Components

总计

2005

0.02%

9.10%

0.04%

0.75%

9.91%

2006

0.11%

24.71%

0.60%

4.48%

29.90%

2007

0.36%

31.71%

1.07%

6.79%

39.93%

2008

0.20%

16.95%

0.48%

2.63%

20.26%

总计

0.70%

82.47%

2.18%

14.65%

100.00%

=( SUM('ResellerSales_USD'[SalesAmount_USD]))
 /CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
           ,ALL('ResellerSales_USD'))

分母中的 CALCULATE 表达式会启用求和表达式,在计算中包括所有行。 这将覆盖表达式分子部分存在的 CalendarYear 和 ProductCategoryName 的隐式筛选器。

相关函数

CALCULATE 函数要求返回单个值的表达式作为其第一个参数,而 CALCULATETABLE 函数采用一个值列表。

请参阅

参考

CALCULATETABLE 函数

其他资源

筛选器函数 (DAX)