它解决什么问题
GroupBy 出的是每组一行的清单,Pivoting 出的是二维交叉表。要「各部门各年度的原值合计」这种一眼看得出趋势的表,用它。
和 GroupBy 的关系:Pivoting 是 GroupBy 加了一个「列方向的分组」。只填行分组就等同于 GroupBy,再填一个列分组,结果才展开成二维。理解了这一点,配置就不难。
它在流程里的位置
后面接一个改名节点是有意的 – 透视出来的列名带聚合方法,直接出报表不好看,下游写死列名也容易断。
基本信息
| 英文原名 | Pivoting |
|---|---|
| 中文名称 | 透视 / 数据透视(iModel 中文界面) |
| 输入端口 | 1 个数据表 |
| 输出端口 | 3 个:透视表、行方向合计、列方向合计 |
| 输出列数 | 由列分组那一列有多少个不同取值决定 |
配置项逐条
-
Groups行方向分组
结果表里每一行代表什么。选「所属部门」,输出就是每个部门一行。可以选多列。
-
Pivots列方向分组
决定横着展开成哪些列。选「年份」,这一列里有几个不同的年份,输出就有几组列。选取值特别多的列会直接把表撑爆 – 选之前先确认这一列有多少个不同值。
-
Manual Aggregation聚合设置
格子里放什么。和 GroupBy 一样,选列加方法:求和、计数、平均等。同一列可以加多次用不同方法,但那样列数会翻倍。
-
Column naming输出列命名方式
默认列名会拼上取值和方法,像
2026+Sum(原值)。可以改成只保留取值。无论选哪种,下游都别写死列名 – 数据换一批多出一个年份,列名就变了。
Pivoting 配置对话框
行方向分组Groups
所属部门结果里每个部门一行。
列方向分组Pivots
年份
这一列有几个不同取值,输出就有几组列。选到「资产编号」这种唯一值列,会生成上万列直接卡死。
聚合Manual Aggregation
原值 → 求和格子里放什么,配法和 GroupBy 一致。
最小示例
输入
| 所属部门 | 年份 | 原值 |
|---|---|---|
| 信息部 | 2025 | 86000 |
| 信息部 | 2026 | 7800 |
| 行政部 | 2025 | 4200 |
| 行政部 | 2026 | 63000 |
输出(主输出端口)
| 所属部门 | 2025+Sum(原值) | 2026+Sum(原值) |
|---|---|---|
| 信息部 | 86000 | 7800 |
| 行政部 | 4200 | 63000 |
另外两个输出端口分别是各部门的横向合计和各年份的纵向合计 – 需要总计行的话不用自己再算一遍。
三个常见坑
- 列分组选错,生成上万列。把「资产编号」这种每行都不一样的列放进列方向分组,输出会有几万列,KNIME 会卡很久甚至内存溢出。放进去之前先用 GroupBy 数一下这列有多少个不同取值。
- 数据换一批,下游全断。今年多了一个部门或多了一个年份,输出列数就变,写死列名的下游节点立刻变红。修法:透视后接 Column Renamer 或 Table Manipulator 把列名规范化,或者干脆在下游用通配符选列而不是点名选。
- 某些格子是空的。某个部门在某一年没有数据,交叉点上就是缺失值 – 这是正确的表达,不是 bug。要显示成 0 的话后面接 Missing Value 填 0,但先想清楚「没有记录」和「金额为零」在你的口径里是不是一回事。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 只要每组一行的清单,不需要交叉 | GroupBy |
| 要反过来,把宽表转成长表 | Unpivoting |
| 只是想调整列的顺序和名称 | Table Manipulator |
| 要做的是同比环比这类跨列计算 | 透视之后再用 Math Formula |

