KEEPFILTERS
释义:计算 CALCULATE 或 CALCULATETABLE 函数时,修改应用筛选器的方式
语法:KEEPFILTERS(表达式)
参数:
备注:
- 可以在上下文 CALCULATE 和 CALCULATETABLE 函数中使用 KEEPFILTERS,以替代这些函数的标准行为。
- 默认情况下,函数(如 CALCULATE)中的筛选器参数用作用于计算表达式的上下文,因此 CALCULATE 的筛选器参数会替换同一列上的所有现有筛选器。 即其他内外部筛选器对该列的筛选不起作用。
- 可使用 KEEPFILTERS 函数修改此行为。 使用 KEEPFILTERS 时,当前上下文中的任何现有筛选器都将与筛选器参数中的列进行比较,且这些参数的交集将用作计算表达式的上下文。 对任何一列的最终影响是,这两组参数都适用:CALCULATE 中使用的筛选器参数和 KEEPFILTER 函数的参数中的筛选器。 换言之,尽管 CALCULATE 筛选器替换了当前上下文,但 KEEPFILTERS 将筛选器添加到了当前上下文。
- 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
示例:返回指定年度的销量,使其在其他年度上下文中不显示数据
2022sales= CALCULATE([Sales],KEEPFILTERS(sales[year] = "2022"))
等价写法一:
2022sales= CALCULATE([Sales],FILTER(sales,sales[year] = "2022"))
等价写法二:
2022sales= CALCULATE([Sales],sales[year] = "2022",VALUES(sales[year]))