作为一个技术栈出身的攻城狮,虽然走上管理之路,但是技术是不能扔下的,时不时的拿起来重温一下,理论与实践相结合...
使用背景:
住建部某区块链共享平台(下游系统)需要自于上游系统的生产库数据,数据量不大十几万,而且须要每天提供截止当天的增量数据,要求每条数据给出数据变化时间及标示,即数据若是插入有插入时间和插入标示;若是改动,有改动时间和改动标示;若是删除需逻辑删除、有删除标示且有删除时间等等。
解决办法:
kettle的转换ktr里有一个图元叫做合并记录。能够把两个表输入分为源和目的依据唯一标示进行全量比对。得到增量的数据流,再写入到中间表里,即能够实现该需求。实现功能的ktr如下图:
1 输入源 合并记录
上图。最左側是两个表输入,上面一个GRZHXX 是上游系统,下一个是SEND_GRZHXX目标数据
GRZHXX的数据来源SQL:注意一定要排序操作!
SEND_GRZHXX的数据来源SQL: 注意一定要排序操作!
2 值映射
例如以下图, 将输入源与目的源的每一个字段数据依据唯一字段比較后到值映射图元,使用字段名为起的后面用到的一个变量名(可随意起)。源值列为系统默认
1 代表输入源与目标源比较后删除的数据标志
2 是输入源新增
3 是输入源更新
4是不变 目标值 是自己起的名字 能够依据须要不变 或改动
标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种。
1. “identical” – 旧数据和新数据一样
2. “changed” – 数据发生了变化;
3. “new” – 新数据中有而旧数据中没有的记录
4. “deleted” –旧数据中