计算
在指定筛选器所修改的上下文中对表达式进行求值。
语法
DAX
CALCULATE(,,…)
参数
术语定义表达式要进行求值的表达式。
filter1, filter2,…(可选)布尔表达式的逗号分隔列表或定义筛选器的表表达式。
用作第一个参数的表达式在本质上与度量值相同。
以下限制适用于用作参数的布尔表达式:表达式不能引用度量值。
表达式不能使用嵌套的 CALCULATE 函数。
表达式不能使用扫描表或返回表的任何函数,包括聚合函数。
但是,布尔表达式可以使用查找单个值或计算标量值的任何函数。
返回值
作为表达式结果的值。
备注
如果已筛选数据,CALCULATE 函数更改(增删改)在其中筛选数据的上下文,并在指定的新上下文中对表达式进行求值。对于筛选器参数中使用的每个列,将删除该列上的任何现有筛选器,并改为应用筛选器参数中使用的筛选器。
示例
要计算当前经销商销售额与所有经销商销售额的比率,可在数据透视表中添加一个计算当前单元格销售额总和的度量值(分子),然后将该总和除以所有经销商的总销售额(分母)。 为确保分母保持不变,无论数据透视表如何筛选数据或对数据进行分组,公式中表示分母的部分必须使用 ALL 函数清除任何筛选器并创建正确的合计。
下表显示了使用代码部分中的公式创建名为“所有经销商销售额比率”的新度量值时的结果 。
若要查看其工作原理,请将字段 CalendarYear 添加到数据透视表的“行标签”区域,然后将字段 ProductCategoryName 添加到“列标签”区域 。 然后,将新度量值添加到数据透视表的“值”区域 。 要将数字显示为百分比,请将百分比数字格式应用于数据透视表中包含新度量值“所有经销商销售额比率”的区域 。
所有经销商销售额列标签行标签配件自行车服装部件总计
20050.02%9.10%0.04%0.75%9.91%
20060.11%24.71%0.60%4.48%29.90%
20070.36%31.71%1.07%6.79%39.93%
20080.20%16.95%0.48%2.63%20.26%
总计0.70%82.47%2.18%14.65%100.00%
DAX=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
分母中的 CALCULATE 表达式使求和表达式能够包括计算中的所有行。 这将覆盖表达式分子部分存在的 CalendarYear 和 ProductCategoryName 的隐式筛选器。