ALLEXCEPT
删除表中所有上下文筛选器,已应用于指定列的筛选器除外。
语法
ALLEXCEPT(<table>,<column>[,<column>[,…]])
parameters
术语 | 定义 |
---|---|
表 | 要从中删除所有上下文筛选器的表,针对后续参数中指定的那些列的筛选器除外。 |
列 | 必须保留上下文筛选器的列。 |
ALLEXCEPT 函数的第一个参数必须是对基表的引用。 所有后续参数必须是对基列的引用。 不能将表表达式或列表达式用于 ALLEXCEPT 函数。
返回值
删除了所有筛选器(针对指定列的筛选器除外)的一个表。
备注
此函数不单独使用,而是用作中间函数,可用于更改执行过其他计算的结果集。
可以在不同的方案中使用 ALL 和 ALLEXCEPT:
函数和用法 说明 ALL(Table) 从指定表删除所有筛选器。 实际上,ALL(Table) 返回表中的所有值,同时删除上下文中可能已以其他方式应用了的任何筛选器。 如果要处理多个级别的分组,并且想要创建一个计算来创建聚合值与总值的比率,此函数则很有用。 ALL (Column[, Column[, …]]) 删除表中指定列的所有筛选器;表中针对其他列的所有其他筛选器仍会应用。 所有列参数必须来自同一个表。 如果想要删除一个或多个特定列的上下文筛选器并保留所有其他上下文筛选器,ALL(Column) 变体则很有用。 ALLEXCEPT(Table, Column1 [,Column2]...) 删除表中所有的上下文筛选器,应用于指定列的筛选器除外。 如果要删除表中多个(但不是所有)列的筛选器,这是一个快捷的方法。 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
示例
以下度量值公式对 SalesAmount_USD 进行求和并使用 ALLEXCEPT 函数删除 DateTime 表上的所有上下文筛选器,已应用于 CalendarYear 列的筛选器除外。
= CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLEXCEPT(DateTime, DateTime[CalendarYear]))
由于公式使用 ALLEXCEPT,因此,只要 DateTime 表中 CalendarYear 以外的任何列用于对可视化效果进行切片处理,此公式则将删除任何切片器筛选器,提供等于 SalesAmount_USD 之和的值。 但是,如果使用 CalendarYear 列对可视化效果进行切片处理,结果则会有所不同。 由于 CalendarYear 被指定为 ALLEXCEPT 的参数,因此对数据按年进行切片处理时,将按行级别对年份应用筛选器