它解决什么问题
行 ID 是 KNIME 给每一行发的唯一编号,默认长成 Row0、Row1。多数时候你不用管它 – 直到要纵向拼表,两张表的行 ID 全部撞车。
在每个分支进入拼接之前各接一个。比事后调 Concatenate 的重复处理方式干净 – 那个方案会留下带后缀的怪异行 ID。
基本信息
| 英文原名 | RowID |
|---|---|
| 中文名称 | 行 ID(iModel 中文界面) |
| 输入端口 | 1 个数据表 |
| 输出端口 | 1 个,行数和数据都不变,只有行 ID 变了 |
| 会改数据吗 | 不会。除非你要求把旧行 ID 追加成一列 |
配置项逐条
-
生成新的行 IDCreate new RowIDs
勾上就是从
Row0开始重新连号。这是最常用的一项 – 拼表前重排、排序后想让编号也连续、筛选后跳号看着别扭,都用它。 -
用某一列的值作行 IDReplace RowID with column
把资产编号这类业务编号变成行 ID。慎用 – 那一列一旦有重复就直接中止执行。需要按它关联用 Joiner,需要按它去重用 Duplicate Row Filter,都不必动行 ID。
-
重复时自动加后缀Ensure uniqueness
配合上一项用。原值重复时自动加后缀保证唯一。能跑通,但行 ID 变得不好看,而且掩盖了「这一列本来就不唯一」这个事实。
-
把旧行 ID 存成一列Append column with old RowID
重排之前先把原来的行 ID 留成普通数据列。做追溯时有用 – 比如你想知道汇总结果里某一行原本来自哪一行。
RowID 配置对话框
生成新的行 IDCreate new RowIDs
勾选
从 Row0 重新连号。拼表前用这一项就够了。
用某列作行 IDReplace RowID with
资产编号
慎用。那列有重复会直接中止执行。
保留旧行 ID
追加成一列
需要追溯来源时勾上。
三个常见坑
- 拿业务编号当行 ID,一有重复就中止。同一个资产编号在不同年度各有一条记录,这在业务上完全合理,但作为行 ID 就非法。行 ID 不该承载业务含义。
- 重排之后想追溯却追不回来。重排是不可逆的。需要追溯就先勾「保留旧行 ID」 – 想起来的时候通常已经晚了。
- 以为重排能解决业务重复。它只处理 KNIME 内部的行 ID,和数据里有没有重复记录是两回事。业务去重要用 Duplicate Row Filter。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 要去掉业务上重复的记录 | Duplicate Row Filter |
| 要把行 ID 变成普通一列拿去分析 | 本节点勾「保留旧行 ID」,或用专门的行 ID 转列节点 |
| 只是拼表时报行 ID 重复 | 本节点重排,或调 Concatenate 的重复处理方式 |
| 想给数据加一个自增序号列 | 那是普通数据列,不是行 ID。用计数器类节点 |

