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])