什么是宽表和长表
| 宽表 | 长表 | |
|---|---|---|
| 长什么样 | 每个月一列,一个部门一行 | 月份是一列的取值,一个部门一个月一行 |
| 适合 | 给人看,一眼比较 | 给机器算,分组、筛选、画图 |
| 加一个月 | 要加一列,下游可能断 | 只是多几行,结构不变 |
判断标准:列名里带着数据吗?列名叫「1 月」「2 月」,说明月份这个信息被存进了列名而不是数据里。这就是宽表,也是它不好做后续分析的根本原因。
节点串
核心就是 Unpivoting 一个节点。它是 Pivoting 的反向操作 – 一个把长变宽,一个把宽变长。
分步看表怎么变
点上一步下一步。琥珀色的格子是这一步改动的地方。
月份藏在列名里
两行三个月的数据。想按月筛选、按月画图、或者算环比,在这个形态下都很别扭 – 因为「月份」根本不是一列数据。
| 部门 | 1 月 | 2 月 | 3 月 |
|---|---|---|---|
| 信息部 | 86000 | 12000 | 7800 |
| 行政部 | 4200 | 67200 | 3100 |
列名变成了数据
配置只有两项:要转的列选「1 月、2 月、3 月」,要保留的列选「部门」。两行变六行 – 原来的列名进了一列,原来的值进了另一列。
| 部门 | ColumnNames | ColumnValues |
|---|---|---|
| 信息部 | 1 月 | 86000 |
| 信息部 | 2 月 | 12000 |
| 信息部 | 3 月 | 7800 |
| 行政部 | 1 月 | 4200 |
| 行政部 | 2 月 | 67200 |
| 行政部 | 3 月 | 3100 |
把自动生成的列名改成业务说法
Unpivoting 产出的列名是固定的英文。改成「月份」和「金额」,下游和报表都好读。这一步顺带给下游立了稳定接口。
| 部门 | 月份 | 金额 |
|---|---|---|
| 信息部 | 1 月 | 86000 |
| 信息部 | 2 月 | 12000 |
| 信息部 | 3 月 | 7800 |
| 行政部 | 1 月 | 4200 |
| 行政部 | 2 月 | 67200 |
| 行政部 | 3 月 | 3100 |
按月筛选、按月汇总都成了一步操作
比如筛出金额大于五万的记录 – 在宽表形态下这要对三列各写一遍条件,长表形态下就是一个 Row Filter。多一个月份也不用改任何配置。
| 部门 | 月份 | 金额 |
|---|---|---|
| 信息部 | 1 月 | 86000 |
| 行政部 | 2 月 | 67200 |
关键配置
Unpivoting 配置对话框
要转换的列Value columns
1 月、2 月、3 月
这些列的列名会变成数据。列很多且命名有规律时用通配符选,比逐个勾快 – 而且以后新增月份会自动被覆盖。
要保留的列Retained columns
部门
维度列放这里,它们会在每一行重复出现。漏选的话那一列的信息就丢了。
输出列名
自动生成,通常是 ColumnNames 和 ColumnValues
后面接 Column Renamer 改成业务说法。
三个会绊住人的地方
- 要转的列类型必须一致。选中的这些列会被合并成一列,类型不同就并不到一起。十二个月里有一列被读成了文本,转之前要先统一类型。
- 用通配符选列,别逐个勾。列名如果是「1 月」到「12 月」这种规律形式,用模式匹配选。逐个勾的话,明年多一列你还得回来改配置。
- 月份变成文本后排序会乱。「10 月」会排在「2 月」前面 – 按字符比大小。要正确排序,要么把月份转成数字,要么在源头就用「2026-01」这种补零的写法。
换成你的数据要改哪里
| 要改的地方 | 怎么改 |
|---|---|
| 要转的列 | 把月份列换成你的那批列,尽量用通配符匹配 |
| 要保留的列 | 所有维度列都要选上,漏一个就丢一份信息 |
| 输出列名 | 在 Column Renamer 里改成你的业务说法 |
| 要反过来转 | 长转宽用 Pivoting,配置思路正好相反 |

