PowerBi中REMOVEFILTERS怎么使用?
在 Power BI 的 DAX 中,REMOVEFILTERS()
是一个非常重要的函数,常用于取消某个字段或表的筛选上下文(Filter Context),从而让你的计算不受切片器(Slicer)、筛选器或视觉对象的限制。
✅ 一、REMOVEFILTERS 是什么?
REMOVEFILTERS(table_or_column)
作用:清除指定列或表的筛选器,返回未筛选的全部数据。
它类似于 ALL()
函数,但语义更直观。
ALL()
是“返回所有值”,
REMOVEFILTERS()
是“移除筛选器”。
📘 二、语法
REMOVEFILTERS(<table_or_column>)
参数 | 含义 |
---|---|
table_or_column | 你想清除筛选器的列或整张表 |
🎯 三、使用场景举例
🌟 示例 1:计算不受地区筛选影响的总销售额
Total Sales (Ignore Region) =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Region[RegionName])
)
💡 即使用户在报表中筛选了“华东”或“华南”,这个度量值依然计算所有地区的销售总额。
🌟 示例 2:计算产品分类占比
Category Sales % =
DIVIDE(
SUM(Sales[Amount]),
CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS(Product[Category]))
)
分母中使用
REMOVEFILTERS(Product[Category])
,目的是获取“所有分类”的总销售额。
🌟 示例 3:配合时间函数使用,计算 YTD 销售额不受时间筛选影响
YTD Sales (Ignore Filter) =
CALCULATE(
TOTALYTD(SUM(Sales[Amount]), Sales[Date]),
REMOVEFILTERS('Date')
)
🔍 四、REMOVEFILTERS vs ALL vs ALLEXCEPT
函数名 | 作用 | 是否返回值集合 | 常用配合 |
---|---|---|---|
REMOVEFILTERS() | 移除筛选器,但不返回值集合 | ❌ | CALCULATE |
ALL() | 移除筛选器,并返回所有值集合(可用于聚合、计算占比) | ✅ | CALCULATE , DIVIDE |
ALLEXCEPT() | 仅保留指定列的筛选器,移除其余所有筛选器 | ✅ | 多维对比 |
🧠 五、总结一句话:
REMOVEFILTERS() 是用来“取消筛选影响”的,特别适用于“比较总值”、“计算占比”、“避免 slicer 影响”的度量值中。