# 点一下柱子数字就变了：切片器、交叉筛选、钻取各改的是哪一层筛选

分清常驻筛选、点击产生的交叉筛选与换页钻取各自加在哪一层，以及它们叠加时为什么是取交集、占比为什么会跳到 100%

> 数据可视化 · Power BI 入门 · DAX · 约 5 分钟 · 10 月 27 日

## 本篇要点

1. 切片器、交叉筛选、钻取都不是在改数字，而是往这个数字的筛选条件里加东西，区别在加在哪一层、什么时候加、对谁生效。
2. 切片器是常驻筛选器，默认筛整页所有视觉对象，连其他切片器也一起筛。
3. 交叉筛选会真的删掉无关数据，交叉突出显示只把无关数据变暗；卡片这类只有一个数字的视觉对象没有“变暗”，只能被筛，所以点柱子后它会直接重算。
4. 钻取不在本页加条件，而是换一页并带上钻取筛选器；“保留所有筛选”打开时，来源页的切片器与页面筛选会一起搬到目标页，明细页行数因此变少。
5. 向下钻取只改一张图自己的层次展开，默认不影响页面上其他视觉对象。
6. 多个条件同时存在时取交集，与操作顺序无关；判断数字对不对，先看它的分母是谁。
7. 占比算成 100% 通常不是公式错，而是分母跟着点击一起变小了：ALL 会连切片器一起清掉，ALLSELECTED 保留其他视觉对象传来的条件，所以点选后仍可能跳到 100%。
8. 视觉对象级筛选会在交互时被带到其他视觉对象上，这是“旁边合计莫名变小”的一个来源。

---

一份做好的看板，常会被这样一句话卡住：

“你这两个数对不上。卡片上写华东 1280 万，我点了一下 A 产品那根柱子，卡片就变成 192 万了。到底哪个对？”

都对。1280 万是华东全部产品，192 万是华东的 A 产品。问题不在计算，而在于你刚才那一下点击，往这个数字身上加了一个条件，旁边的图却未必跟着变。切片器、交叉筛选、钻取看着都在“筛”，改的却不是同一层条件。

## 三种交互各改哪一层

先回顾一下：每个数字算出来时，都带着一组筛选条件。Power BI 把筛选器分成四类：视觉对象级（只影响一个图）、页面级、报表级，以及**钻取筛选器**。钻取筛选器不属于任何一层页面，决定的是“跳到另一页时带什么条件过去” [5]。

**切片器**是摆在画布上的常驻筛选器，效果接近页面级筛选：一旦选中，这一页每个图都按它重算。默认它会筛选页面上所有其他视觉对象，**包括其他切片器** [4]。

**交叉筛选**由点击产生，是临时的。它有两种动作，区别很大：

- **交叉筛选**真的删掉无关数据，折线图、散点图、地图上只剩被选中的那部分点。
- **交叉突出显示**不删数据，只把无关部分变暗，柱状图、条形图、饼图默认是这种表现 [1]。

![同一份数据被交叉筛选和交叉突出显示：柱状、折线、散点三张图并排，选中一个值后，有的图数据只剩子集，有的图只是变暗](https://learn.microsoft.com/en-us/power-bi/create-reports/media/power-bi-reports-filters-and-highlighting/power-bi-filter-reading.png)

**卡片这类只有一个数字的视觉对象没有“变暗”这回事，只能被筛。**这就是开头那个场景的由来：你点了 A 产品的柱子，折线图只是变暗、形状还在，卡片却直接重算成 192 万。读者看到的两张图，一个像没反应，一个像被改掉了。

**钻取**不改当前页，而是带着选中项跳到明细页，目标页的条件由钻取筛选器决定 [6]。配套有个“保留所有筛选”（Keep all filters）开关：打开它，来源页的切片器选择和页面筛选会一起搬到目标页；关掉就只保留钻取的那一个字段 [8]。这也是“我钻到明细页，记录怎么只有 3 条”的常见来源。

还有一个容易混淆的动作：**向下钻取**（在日期层次里从年点到月）只改一张图自己的展开层次，默认不影响页面上其他视觉对象 [2]。

## 叠加起来是取交集，与顺序无关

沿用那组数：全公司 5600 万，华东 1280 万；A 产品全公司 420 万，其中华东 192 万。

选了“华东”切片器，又点了 A 产品的柱子，卡片上是 **192 万**——华东的 A 产品。它既不是 1280 万（只有地区条件），也不是 420 万（只有产品条件），更不是“后点覆盖先点”得到的某个单条件结果。先点柱子再选切片器，结果一样。

顺带看出：192 万 ÷ 1280 万 = 15%，420 万 ÷ 5600 万 = 7.5%。同一个产品，分母不同，占比就不同。所以争论“哪个数对”之前，先问：这个数字的分母是谁。

## 两处最容易算错的地方

**一、占比的分母被一起筛掉了。** 在产品类别表里用“占列总计百分比”这类快速算法，点 A 产品后，这张图只剩一行，列总计也只剩它自己，占比变成 100%。

自己写度量值也同理。`占比 = DIVIDE([销售额], CALCULATE([销售额], ALL(产品表)))` 里，`ALL` 把产品上的筛选一律清掉，包括点柱子传来的那一个，分母仍是华东的 1280 万，占比稳定在 15%。想让它跟着切片器重新算，用 `ALLSELECTED`：它只忽略当前这张图自己造成的筛选，保留其他视觉对象传来的条件 [7]。

反直觉的地方在这里：交叉筛选属于“其他视觉对象传来的条件”，`ALLSELECTED` 会把它保留，于是点完柱子，分母缩到 192 万，占比照样跳到 100%。两种写法没有谁更“正确”，区别在你要回答哪个问题——占比要不要随着点选变化。这一点得先想清楚，再写公式。

**二、视觉对象级的筛选会跟着点击传出去。** 文档写明：交叉筛选与突出显示时，视觉对象级筛选会被保留，A 图上的这类筛选会一起加到被它交互的 B 图上 [2]。所以某张图单独设过“只看直营渠道”，从它点出去，旁边的合计也跟着小一截。这不是错误行为，但很难当场看懂。

## 交付前值得动手做的三件事

1. 选中切片器，或在“格式”里打开“编辑交互”，每个图右上角会出现三个选项：筛选、突出显示、无。页眉的总计卡片、说明性图表选“无” [3]。折线图、散点图、地图只能被筛选、不能被突出显示 [3]，它们旁边放数字卡片时，数字会随点击直接变。
2. 占比的分母按问句定，标题里写清基准（“占华东销售额”还是“占全公司销售额”）。
3. 自己把每个能点的东西点一遍，列出“这一下该变哪些图、不该变哪些图”。真实看板里的错几乎都是在这一步发现的——不是算错，而是某个该隔离的图没隔离，或某个该固定基准的占比跟着缩了。

切片器是常驻的条件，交叉筛选是临时的条件，钻取是换页时随行的条件。它们叠加时不互相覆盖，只取交集。一直追问“这个数字现在带着哪几个条件、分母是谁”，那些“对不上的数字”大多当场就能解释清楚。

## 思维导图

```mermaid
flowchart LR
  R["点一下柱子，数字为什么变"] --> S["三种交互各改哪一层"]
  S --> S1["切片器：常驻、整页、含其他切片器"]
  S --> S2["交叉筛选：临时、删行；突出显示：只变暗"]
  S --> S3["钻取：换页带条件，默认不影响本页其他图"]
  R --> I["叠加规则：取交集，与顺序无关"]
  I --> E["例：华东 1280 万 × A 产品 → 192 万"]
  R --> W["最易算错的两处"]
  W --> W1["占比分母被一起筛掉 → 100%"]
  W --> W2["视觉对象级筛选随点击传导"]
  R --> A["交付前检查"]
  A --> A1["编辑交互设 无"]
  A --> A2["占比分母按问句选 ALL 或 ALLSELECTED"]
  A --> A3["逐个点一遍，列出该变与不该变"]
```

## 术语表

- 交叉筛选（cross-filter）：点一张图时真的删掉其他图里无关的数据，那边的数字随之重算。
- 交叉突出显示（cross-highlight）：点一张图时只把其他图里无关的部分变暗，数据还在，合计不变。
- 编辑交互（Edit interactions）：逐个视觉对象设定它对别的图是筛选、突出显示，还是完全不影响。
- 钻取筛选器（drillthrough filter）：钻取到明细页时随行的那一个字段条件，独立于视觉对象级、页面级、报表级筛选。
- 保留所有筛选（Keep all filters）：决定钻取时来源页上的切片器和页面筛选要不要一起搬到目标页。
- 向下钻取（drill mode）：在同一张图内部沿层次展开，和换页的钻取是两件不同的事。

## 来源

1. [Microsoft Learn: Filters and highlighting in Power BI reports — 交叉筛选与交叉突出显示的区别](https://learn.microsoft.com/en-us/power-bi/create-reports/power-bi-reports-filters-and-highlighting)
2. [Microsoft Learn: How visuals interact in a Power BI report — 默认交互行为、视觉对象级筛选被保留、钻取默认不影响其他视觉对象](https://learn.microsoft.com/en-us/power-bi/explore-reports/end-user-interactions)
3. [Microsoft Learn: Change how visuals interact in a report — 编辑交互的筛选/突出显示/无三种选择](https://learn.microsoft.com/en-us/power-bi/create-reports/service-reports-visual-interactions)
4. [Microsoft Learn: Slicers in Power BI — 切片器默认筛选页面所有其他视觉对象](https://learn.microsoft.com/en-us/power-bi/visuals/power-bi-visualization-slicers)
5. [Microsoft Learn: Add a filter to a report in Power BI — 视觉对象级、页面级、报表级与钻取筛选器四类](https://learn.microsoft.com/en-us/power-bi/create-reports/power-bi-report-add-filter)
6. [Microsoft Learn: Drillthrough in Power BI reports — 钻取页与钻取筛选器的配置](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough)
7. [SQLBI: Introducing ALLSELECTED in DAX — ALL 与 ALLSELECTED 在占比计算中的差别](https://www.sqlbi.com/articles/introducing-allselected-in-dax/)
8. [XXL BI: Enhanced Drillthrough in Power BI — Keep all filters 开关如何传递来源页筛选](https://xxlbi.com/blog/enhanced-drillthrough-in-power-bi/)

---

原文：https://pangzhengboyin.com/articles/power-bi-slicer-cross-filter-drillthrough-06ae1867

> **庞征博引** · 想学的，慢慢都会
>
> 庞征博引是把想学的东西写成连载的 AI 学习工具：每篇 5–10 分钟，边读边问，接下来学什么跟着你走。这篇就是这样写出来的。
>
> 开始你自己的连载 → https://pangzhengboyin.com
