FILTER

适用于:计算列计算表度量值视觉对象计算

返回一个表,用于表示另一个表或表达式的子集。

语法

FILTER(<table>,<filter>)  

parameters

术语 定义
要筛选的表。 table 还可以是生成表的表达式。
filter 要为表的每一行计算的布尔表达式。 例如,[Amount] > 0[Region] = "France"

返回值

只包含已筛选行的表。

备注

  • 可使用 FILTER 减少表中要使用的行数,并且在计算中仅使用特定数据。 FILTER 不可单独使用,而是用作嵌入到需要表作为参数的其他函数中的函数。

  • 有关使用 FILTER 时的最佳做法,请参阅避免使用 FILTER 作为筛选器参数

使用 COUNTROWS 而不是 DAX 中的 COUNT

  • 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例

下面的示例通过使用筛选出美国销售额的度量值,然后按日历年和产品类别进行切片,从而创建美国以外地区 Internet 销售额报表。 若要创建此度量值,请使用 Sales Territory 来筛选表 Internet Sales USD,然后在 SUMX 函数中使用筛选后的表。

在此示例中,表达式:

FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")

返回一个表,该表是 Internet Sales 减去属于美国销售区域的所有行后的子集。 RELATED 函数用于将 Internet Sales 表中的 Territory 键链接到 SalesTerritory 表中的 SalesTerritoryCountry。

下表说明“非美国 Internet 销售额”度量值的概念证明,在下面的代码部分中提供了该度量值的公式。 该表将所有 Internet 销售额与美国以外地区 Internet 销售额进行比较,通过从计算中排除美国销售额来表明筛选表达式是有效的。

要重新创建此表,请将字段 SalesTerritoryCountry 添加到报表或数据透视表的“行标签”区域。

表 1. 比较美国与所有其他地区的总销售额

行标签 Internet Sales 非美国 Internet 销售额
澳大利亚 $4,999,021.84 $4,999,021.84
加拿大 $1,343,109.10 $1,343,109.10
法国 $2,490,944.57 $2,490,944.57
德国 $2,775,195.60 $2,775,195.60
英国 $5,057,076.55 $5,057,076.55
美国 $9,389,479.79
总计 $26,054,827.45 $16,665,347.67

最终的报表显示通过使用“非美国 Internet 销售额”度量值创建数据透视表的结果。 请将字段 CalendarYear 添加到数据透视表的“行标签”区域,然后将字段 ProductCategoryName 添加到“列标签”区域

表 2. 按产品类别比较美国以外地区销售额

行标签 Accessories Bikes Clothing 总计
2005 $1,526,481.95 $1,526,481.95
2006 $3,554,744.04 $3,554,744.04
2007 $156,480.18 $5,640,106.05 $70,142.77 $5,866,729.00
2008 $228,159.45 $5,386,558.19 $102,675.04 $5,717,392.68
总计 $384,639.63 $16,107,890.23 $172,817.81 $16,665,347.67
SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")  
     ,'InternetSales_USD'[SalesAmount_USD])  

筛选器函数
ALL 函数
ALLEXCEPT 函数