节点手册 · 行列操作

KNIME RowID 重排行 ID 用法

Manipulation → Row → Other

重新生成行 ID,或者把行 ID 和某一列互换。用得最多的场景只有一个:拼表之前把各分支的行 ID 重排一遍,从根上避开撞车。

它解决什么问题

行 ID 是 KNIME 给每一行发的唯一编号,默认长成 Row0Row1。多数时候你不用管它 – 直到要纵向拼表,两张表的行 ID 全部撞车。

RowID分支一重排
RowID分支二重排
ID 已经不重复
Concatenate顺利摞起来
GroupBy汇总

在每个分支进入拼接之前各接一个。比事后调 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
追加成一列 需要追溯来源时勾上。

三个常见坑

  1. 拿业务编号当行 ID,一有重复就中止。同一个资产编号在不同年度各有一条记录,这在业务上完全合理,但作为行 ID 就非法。行 ID 不该承载业务含义。
  2. 重排之后想追溯却追不回来。重排是不可逆的。需要追溯就先勾「保留旧行 ID」 – 想起来的时候通常已经晚了。
  3. 以为重排能解决业务重复。它只处理 KNIME 内部的行 ID,和数据里有没有重复记录是两回事。业务去重要用 Duplicate Row Filter。

什么时候该换别的节点

情况换成
要去掉业务上重复的记录Duplicate Row Filter
要把行 ID 变成普通一列拿去分析本节点勾「保留旧行 ID」,或用专门的行 ID 转列节点
只是拼表时报行 ID 重复本节点重排,或调 Concatenate 的重复处理方式
想给数据加一个自增序号列那是普通数据列,不是行 ID。用计数器类节点

拼表还是报行 ID 重复

确认每个分支进入拼接之前都过了一遍重排,只处理一支是不够的。

iModel 专属客服
在线留言或电话联系
在线留言

留下您的问题和联系方式,我们会在一个工作日内回复。

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码