ALLEXCEPT 函数
删除表中除已应用于指定列的筛选器之外的所有上下文筛选器。
语法
ALLEXCEPT(<table>,<column>[,<column>[,…]])
参数
术语 |
定义 |
---|---|
table |
要删除其所有上下文筛选器(但针对随后参数中指定的那些列的筛选器除外)的表。 |
column |
必须保留其上下文筛选器的列。 |
针对 ALLEXCEPT 函数的第一个参数必须是对基表的引用;所有后续参数必须是对基列的引用。 不能将表的表达式或列的表达式与 ALLEXCEPT 函数一起使用。
返回值
除了指定列的筛选器外删除了所有筛选器的表。
注释
此函数不能由自身使用,而是作为可用于更改某个其他计算的执行结果集的临时函数。
如下表所述,您可以在不同环境下使用 ALL 和 ALLEXCEPT 函数。
函数和用法 |
说明 |
---|---|
ALL(Table) |
从指定表中删除所有筛选器。 实际上,ALL(Table) 返回表中的所有值,并且删除上下文中可能已应用的任何筛选器。 在您使用具有很多级别的分组并且想要创建计算(该计算创建聚合值与总值的比率)时,该函数很有用。 |
ALL (Column[, Column[, …]]) |
删除表中指定列的所有筛选器;表中针对其他列的所有其他筛选器仍应用。 所有列参数必须都来自同一个表。 在您想要删除一个或多个特定列的上下文筛选器并且要保留所有其他上下文筛选器时,此 ALL(Column) 变量很有用。 |
ALLEXCEPT(Table, Column1 [,Column2]...) |
删除表中所有上下文筛选器,但已应用于指定列的筛选器除外。 在您想要删除针对表中许多列(但不是所有列)的筛选器时,这是一个方便快捷的方法。 |
示例
下面的示例演示可在度量值中使用的公式。 有关如何创建度量值的详细信息,请参阅在数据透视表或数据透视图中创建度量值。
该公式对 SalesAmount_USD 求和,并且使用 ALLEXCEPT 函数删除 DateTime 表上的所有上下文筛选器,只有已应用于 CalendarYear 列的筛选器除外。
注意 |
---|
上面的示例中使用来自 DAX 示例工作簿的表 ResellerSales_USD 和 DateTime。 有关示例的详细信息,请参阅获取示例数据。 |
=CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLEXCEPT(DateTime, DateTime[CalendarYear]))
因为该公式使用 ALLEXCEPT,所以,只要 DateTime 表中除 CalendarYear 之外的任何列用于对数据透视表进行切片,该公式都将删除任何切片器筛选器,并且提供等于列标签值的 SalesAmount_USD 的总和的值,如表 1 所示。
但是,如果 CalendarYear 列用于对数据透视表进行切片,则结果将不同。 因为 CalendarYear 被指定为 ALLEXCEPT 的参数,所以,在对年份数据进行切片时,筛选器将在行级别应用于年份,如表 2 中所示。 建议用户比较这些表,以便理解 ALLEXCEPT() 的行为。