kettle删除指定数据
来源:互联网 发布:windows phone10更新 编辑:程序博客网 时间:2024/05/17 04:17
kettl进行无效数据的删除
需求来源
需求是这样产生的,因为我要对一张生产库中的表进行增量抽取,抽取方法是通过表中的modify字段来进行增量的,每天根据这个字段获取前一天的数据。但是这样做存在一个问题,就是如果此表发生了记录的物理删除,那么我是无法感知的,所以同步后的表中存在大量已经被删除的无效数据,使数据与源表不一致,所以,需要一种方法来删除这部分不一致的数据。
设计思路
如果要解决以上问题,则需要一种方式来获取这部分无效数据,由于源表没有记录这部分信息,所以很难通过直接的手段来区分那些数据已经无效了。所以我们采用的方式是:首先,通过modify时间获取源表30天的数据,为了减小传输,只获取主键字段。然后,与已经存在的结果表进行对比,找出在结果表中存在而在源表中不存在的那些数据,此部分数据为无效数据。最后删除这部分数据。其实理论上应该对源表所有日期内的数据进行对比,但是为了减小压力,只对近30天的数据进行对比。这样虽然存在少量不一致,但是对于我们的需求已经满足了。下面具体说明一下kettle里面如何实现的。
实现方法
如图所示,首先同步30天内的源表主键,然后执行sql中的操作。由于sql需要等前面的数据同步完成后才可以进行操作,不然可能导致数据缺少,所以需要添加Block this step until steps finish模块进行控制。sql中的内容如下所示。这样就可以实现删除无效数据的要求了。
delete a from dwpdata.${schema}_${name} aleft join dwsdata.del_${schema}_${name} bon a.${key} = b.${key}where a.modifydate >= '${begin_date}'and b.${key} is null;
总结
这个方法并不是最好的,但是在实际ETL项目中确经常出现,因为业务系统自身有其复杂的设设考虑,不能完全适应ETL抽取的要求,主要就包括增量时间戳、删除数据通知这些问题。但是除了昂贵的数据库同步工具外。真的没有什么好用的方式。所以本文说明的方法还是有一定应用场景的。
- kettle删除指定数据
- kettle 数据同时插入删除问题
- ArrayList删除指定索引数据
- kettle删除数据库记录
- kettle从mysql中查询出特定的数据然后发送邮件附件到指定的邮箱。
- 数据库删除指定列重复数据
- ArrayList如何删除指定的几个数据?
- MYSQL:指定时间删除过期数据
- 数据交换工具Kettle
- 数据交换工具Kettle
- 数据交换工具Kettle
- 数据交换工具KETTLE
- 数据交换工具Kettle
- 数据交换工具Kettle
- 数据清洗工具kettle
- Kettle数据固化流程
- kettle 数据转换
- kettle数据同步例子
- linux maven
- 源码分析—HashMap、HashSet、HashTable
- Google推荐的图片加载库Glide介绍
- springMVC+Java验证码完善注册功能
- Apple Pay强势来袭,开发者应做的事情
- kettle删除指定数据
- 流式大数据处理 (实时)的三种框架:Storm,Spark和Samza
- 每天学习十分钟24之工作笔记
- linux(ubuntu)安装jdk
- 离屏渲染学习笔记
- C++常用的智能指针
- 23种设计模式(17):备忘录模式
- getwidth和getmeasuredwidth的区别
- [LeetCode]106 根据中序遍历和后序遍历构建二叉树