活动
滤波器
返回一个表,表示另一个表或表达式的子集。
FILTER(<table>,<filter>)
术语 | 定义 |
---|---|
table |
要筛选的表。 该表也可以是导致表的表达式。 |
filter |
要为表的每一行计算的布尔表达式。 例如,[Amount] > 0 或 [Region] = "France" |
一个仅包含筛选行的表。
可以使用 FILTER 来减少正在使用的表中的行数,并且仅在计算中使用特定数据。 FILTER 不单独使用,而是作为嵌入在其他需要表作为参数的函数中嵌入的函数。
有关使用 FILTER 时的最佳做法,请参阅 避免将 FILTER 用作筛选器参数。
在 DAX 中使用 COUNTROWS 而不是 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 的内容。
下表演示了度量值“NON USA Internet Sales”的概念证明,该公式在下面的代码部分中提供。 该表将所有 Internet 销售额与非美国 Internet 销售额进行比较,以显示筛选器表达式的工作原理,方法是从计算中排除美国销售额。
若要重新创建此表,请将字段 SalesTerritoryCountry 添加到报表或数据透视表的 行标签 区域。
行标签 | 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 添加到 列标签 区域。
行标签 | 辅料 | 自行车 | 服装 | 总计 |
---|---|---|---|---|
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])