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 | 总计 |
2001 | 0.02% | 9.10% | 0.04% | 0.75% | 9.91% |
2002 | 0.11% | 24.71% | 0.60% | 4.48% | 29.90% |
2003 | 0.36% | 31.71% | 1.07% | 6.79% | 39.93% |
2004 | 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 函数采用包含值的表。