Kettle全量更新详细说明

       最开始接触kettle,很直白的一种数据更新方式是数据全量更新,使用最简单的两个工具,表输入、插入/更新(曾经天真的以为这就是随着数据源的变化做出相应变化,即数据的增加、修改、删除,后来发现增加、更新可以做到,删除并不能);

                                Kettle全量更新详细说明_第1张图片

      后来接触到另一种数据更新方式,会使用主键做KEY值对比,对比剩下的属性值,是否有变化,分别记录4种flgfield值)(new 、identical、changed、deleted),可以用Filter rows过滤不同的记录采取不同的操作,以下是我在实际项目当中的具体应用。

          Kettle全量更新详细说明_第2张图片

      

       

       针对identical/changed/new可以采用上图中的插入更新,并且新增一个常量值给某个状态字段作为标识,针对deleted值的记录增加一个常量值给上述的状态字段,必须Status = ‘0’为删除的记录,前台不再显示,ststus = '1' 为正常的记录,前台可以正常显示。但运行几次后发现,运行一定周期数据才会被刷成正确的格式,发现是在两个表输入后数据没有排序。两个数据流必须按照指定的密钥进行排序。当使用排序步骤时,这工作正常。如果数据在PDI之外进行排序(例如,在SQL查询中),则可能会遇到内部区分大小写/不灵敏标志或其他归类问题,就可解决数据准确性问题。

 

     Kettle全量更新详细说明_第3张图片

 

Kettle全量更新详细说明_第4张图片

 

注意:当遇到多数据源时,可以采用在sql中限定每次比对的where条件范围,即可解决。

 

你可能感兴趣的:(实战)