移除视觉对象里“行的型号”造成的行级筛选,但不移除用户的 slicer 筛选

32 阅读2分钟

度量值 中,如果你想:

  • 去掉当前表格行的型号筛选(Row Context → Filter Context)
  • ✔️ 但保留切片器/页面/报表级筛选器对型号的筛选

这是一个典型需求:
移除视觉对象里“行的型号”造成的行级筛选,但不移除用户的 slicer 筛选。


✅ 最正确和安全的写法:

使用 REMOVEFILTERS( 表[列] )ALLSELECTED(…)

关键点:

方法去掉当前行筛选保留切片器筛选保留交互备注
ALL(B_models[型号])会把切片器清掉(不符合你的需求)
REMOVEFILTERS(B_models[型号])最佳, 用于仅移除当前视觉对象的行筛选
ALLSELECTED(B_models[型号])也是可用方案

🟦 推荐方式 1(最佳):REMOVEFILTERS

如果你有一个度量:

[量_roll]

你想在计算时:

  • 忽略当前行的型号(例如视觉对象的每一行型号 A/B/C/…)
  • 但是保留切片器中对型号的筛选(如只选品牌A下的型号)

写法如下:

测算值 =
CALCULATE(
    [量_roll],
    REMOVEFILTERS('B_models'[型号])    -- 去掉当前行的型号筛选
)

✔ 切片器选了哪些型号 → 保留
✔ 行上下文型号 → 移除
✔ 品牌/日期等其他筛选 → 保留


🟦 推荐方式 2:ALLSELECTED

如果你还想保留 图表之间的交互(例如交叉筛选),用:

测算值 =
CALCULATE(
    [量_roll],
    ALLSELECTED('B_models'[型号])  -- 保留切片器但忽略行过滤
)

这个会保留切片器和页面层级筛选,但仍然脱离表格自身每一行的型号过滤。


🟥 错误示例(不要这样用)

CALCULATE([量_roll], ALL('B_models'))

这会:

  • 去掉 所有切片器
  • 去掉 所有维度筛选

导致完全错误的结果。


🧪 验证方式

你可以在一个表格里放:

  • 行:B_models[型号]
  • 列:你写的度量

如果写法正确:

  • 所有型号行都显示同样的汇总值(因为忽略了行型号过滤)
  • 切片器选择某些型号 → 这些型号以外的不会显示,且度量值变化(因为保留切片器过滤)