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 |
Grand Total |
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% |
Grand Total |
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 函数采用包含值的表。