在已修改的筛选器上下文中计算表达式。
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
用作第一个参数的表达式与度量基本相同,第一个参数可以是计算表达式。
筛选器可以是:
当有多个筛选表达式时,可以使用 AND (&&) 逻辑运算符对它们进行计算,这意味着所有条件都必须为 TRUE。
布尔筛选表达式示例
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] > 1 && 'Sales'[OrderDateKey] <100 )
表筛选表达式示例
表表达式筛选器将表对象应用为筛选器。 它可以是对模型表的引用,但更有可能是返回表对象的函数。
CALCULATE ( SUM ( Sales[Sales Amount] ), Filter('Sales','Sales'[OrderDateKey] > 1 && 'Sales'[OrderDateKey] <100) )
布尔过滤器和表过滤器之间的区别。
类型
描述
布尔筛选表达式
筛选器调整函数
通过筛选器调整函数,不仅仅可以添加筛选器。 它们还在修改筛选器上下文时为您提供额外的控制。
在此版本中,我们仅提供“REMOVEFILTERS”功能。它只能去除不必要的维度。示例如下。
在计算Sales Amount合计时,忽略纬度CustomerName。在实际使用时经常作为分母计算总的销售额。
CALCULATE ( SUM ( Sales[Sales Amount] ), REMOVEFILTERS('Sale'[CustomerName]) )
返回表达式的计算结果。
计算满足三个筛选条件时的Sales Amount 合计。
CALCULATE ( SUMX ('Sales', Sales[Sales Amount] ), 'Sales'[OrderKey] > 20 && 'Sales'[OrderKey] <1010, Filter('Sales','Sales'[OrderDateKey] > 1 && 'Sales'[OrderDateKey] <100), REMOVEFILTERS('Sale'[CustomerName]) )
所有的过滤表达式都会作用于第一个参数的内表。这意味着 CALCULATE 函数中的过滤器表达式是一个预过滤器。