它解决什么问题
输入两张或多张表,输出一张行数是它们之和的表。让表变长,不是变宽。
和 Joiner 的分工:Joiner 按键配对、让表变宽,Concatenate 直接摞、让表变长。要判断用哪个,问一句「我是要加字段还是加记录」。
读同一个文件夹里的一批文件不必用它。CSV Reader 和 Excel Reader 都支持文件夹模式,读进来就已经是拼好的了,还自带来源文件列。Concatenate 用在来源本来就分散在不同分支的场合。
它在流程里的位置
两个输入端口可以拖动节点下缘增加。更稳妥的做法是在每个分支进入之前各接一个 RowID 节点,从根上避开行 ID 撞车。
基本信息
| 英文原名 | Concatenate |
|---|---|
| 中文名称 | 行合并 / 表追加(iModel 中文界面) |
| 输入端口 | 默认 2 个,可以拖动节点下缘增加更多输入 |
| 输出端口 | 1 个 |
| 是否改变行数 | 会。等于各输入表行数之和 |
配置项逐条
-
Duplicate row ID handling重复行 ID 处理
三选一:给后来的行加后缀、跳过重复的行、或者直接中止执行。这是整个节点最要紧的一项。各输入表的行 ID 通常都从
Row0开始,摞起来必然全部撞车。选「加后缀」能跑通且不丢数据。千万别选「跳过重复行」 – 它会静悄悄删掉后面表里的行,两张各 500 行的表拼完只剩 500 行,还不报错。做稽核对账的场景尤其致命。更干净的做法是拼之前每个分支各接一个 RowID 节点重排。
-
Column handling列的处理方式
两张表列不完全一样时怎么办。取并集:所有列都保留,某张表没有的列填缺失值。取交集:只保留两张表都有的列,其余丢弃。
取交集会无声丢列,取并集会带来一堆空值。两个都不是绝对安全的默认,配置时看清楚选的是哪个。更好的做法是在拼之前就把各分支的列统一好。
Concatenate 配置对话框
重复行 ID 处理Duplicate row ID handling
加后缀跳过重复行中止执行
选「跳过重复行」会静悄悄删数据且不报错,做稽核对账时尤其不能选。
列的处理方式Column handling
取并集取交集
取交集会丢掉只在一张表里有的列,取并集会带来一批空值。两个都不是绝对安全的默认,配置时看清楚选的是哪个。
三个常见坑
- 报 Duplicate row ID 直接执行失败。这是最常见的一条,原因和修法上面已经写了。展开讲的在报错排查那一组里有单独一篇。
- 拼完行数对不上。比预期少,多半是重复行 ID 选了「跳过」;列数比预期少,是列处理选了取交集。拼完养成对一次行数的习惯。
- 同名列类型不一致。两张表都有「金额」列,一张是数值一张是文本,拼起来后这一列会被降级成文本,下游求和就废了。拼之前统一类型。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 要按键把字段接过来,不是加记录 | Joiner |
| 一批文件在同一个文件夹里 | 读取节点的文件夹模式,不用 Concatenate |
| 循环里每轮结果要收集起来 | Loop End,它自己会做拼接 |
| 拼完要去掉重复记录 | 后面接 Duplicate Row Filter,按业务字段去重 |

