FILTER

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

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

语法

FILTER(<table>,<filter>)

参数

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

返回值

一个仅包含筛选行的表。

言论

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

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

在 COUNTROWS 中使用 COUNT 而不是 DAX

  • 在计算列或行级别安全性 (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。

下表演示了度量值“NON USA Internet Sales”的概念证明,该公式在下面的代码部分中提供。 该表将所有 Internet 销售额与非美国 Internet 销售额进行比较,以显示筛选器表达式的工作原理,方法是从计算中排除美国销售额。

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

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

行标签 Internet 销售 非美国 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

最后一个报表表显示使用度量值 NON USA Internet Sales 创建数据透视表时的结果。 将字段 CalendarYear 添加到数据透视表的 行标签 区域,并将字段 ProductCategoryName 添加到 列标签 区域。

表 2. 按产品类别比较非美国销售额

行标签 辅料 自行车 服装 总计
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 函数