FILTER 函数
返回表示另一个表或表达式的子集的表。
语法
FILTER(<table>,<filter>)
参数
术语 |
定义 |
---|---|
table |
要筛选的表。 此表还可以是产生的结果是表的表达式。 |
filter |
要为该表的每一行计算的布尔表达式。 例如,[Amount] > 0 或 [Region] = "France" |
返回值
只包含筛选行的表。
注释
您可以使用 FILTER 减少表中要使用的行数,并且在计算中仅使用特定数据。 FILTER 不单独使用,而是用作在要求表作为参数的其他函数中嵌入的函数。
示例
下面的示例通过使用筛选出在美国的销售额的度量值,然后按日历年和产品类别进行划分,创建美国以外的 Internet 销售额报表。 为了创建此度量值,您通过使用 Sales Territory 筛选表 Internet Sales USD,然后在 SUMX 函数中使用筛选后的表。
在这个示例中,表达式 FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States") 返回作为 Internet 销售的子集的表,但不包括属于美国销售区域的所有行。 RELATED 函数用于将 Internet Sales 表中的 Territory 键链接到 SalesTerritory 表中的 SalesTerritoryCountry。
下表演示对度量值 NON USA Internet Sales(在下面的代码部分中将提供其公式)的概念证明。 该表将所有 Internet 销售与非美国 Internet 销售进行比较,以便通过从计算中排除在美国进行的销售,演示筛选表达式的工作方式。
为了重新创建该表,请将字段 SalesTerritoryCountry 添加到该数据透视表的**“行标签”**区域中。
表 1.将美国的总销售额与所有其他区域的总销售额进行比较
行标签 |
Internet Sales |
Non USA Internet Sales |
---|---|---|
Australia |
$4,999,021.84 |
$4,999,021.84 |
Canada |
$1,343,109.10 |
$1,343,109.10 |
France |
$2,490,944.57 |
$2,490,944.57 |
Germany |
$2,775,195.60 |
$2,775,195.60 |
United Kingdom |
$5,057,076.55 |
$5,057,076.55 |
United States |
$9,389,479.79 |
|
总计 |
$26,054,827.45 |
$16,665,347.67 |
最终的报表显示在使用度量值 NON USA Internet Sales 创建数据透视表时的结果。 将字段 CalendarYear 添加到数据透视表的**“行标签”区域,将字段 ProductCategoryName 添加到数据透视表的“列标签”**区域。
表 2.按产品类别比较非美国销售额
Non USA Internet Sales |
列标签 |
|
|
|
---|---|---|---|---|
行标签 |
Accessories |
Bikes |
Clothing |
Grand Total |
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 |
Grand Total |
$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])