博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ELT工具Kettle之CDC(Change Data Capture)实现实例
阅读量:4595 次
发布时间:2019-06-09

本文共 930 字,大约阅读时间需要 3 分钟。

ETL过程的第一步就是从不同的数据源抽取数据并把数据存储在数据的缓存区。这个过程的主要挑战就是初始加载数据量大和比较慢的网络延迟。在初始加载完成之后,不能再把所有数据重新加载一遍,我们需要的只是变化的数据。识别出变化的数据,并抽取这些变化的数据称为变化数据捕获(Change Data Capture) 或CDC。

Kettle之基于时间戳的CDC实现实例

实现思路:

首先表中要有数据更新的时间戳如:最后一次修改的时间(XGSJ),如果有创建时间的话更好;

作为例子假设有一张表名字为customer,表中有记录时间戳的字段CJSJ(创建时间)和XGSJ(修改时间);

然后基于时间戳的表CDC_TIME,表中有两个字段一个是LAST_LOAD时间戳,记录最后一次加载的时间戳,另一个字段是CURRENT_LOAD记录当前加载的时间戳(表中首先插入一条很早以前的时间),在加载开始的时候,首先将CURRENT_LOAD设置为当前时间;

最后在加载结束之后将CURRENT_LOAD的时间更新到LAST_LOAD字段上。

 

创建时间戳的表

CREATE TABLE [CDC_TIME] ([LAST_LOAD] datetime NULL ,    ---最后一次加载的时间[CURRENT_LOAD] datetime NULL    ----当前加载的时间); ----插入默认值 INSERT INTO CDC_TIME VALUES('1971-01-01 00:00:01','1971-01-01 00:00:01');

实现DEMO:该实例主要实现的点有

1、设置JOB级别的变量;

2、CDC动态抽取数据;

3、单列拆分多行记录;

 JOB: CDC_ZFJL

 

TRAN:INIT_CDC_TIME

 

TRAN:CDC_ZFJL_DATA

TRAN:CDC_ZFSJ_END

!由于这个涉及到具体项目的使用:该实例完成的是实时捕获数据到结果表,由于中间涉及到一个数据的处理步骤,所以看上去比较繁琐了。大家只要明白这个数据抽取的原理就可以了。

 

转载于:https://www.cnblogs.com/xiaotao726/p/6266613.html

你可能感兴趣的文章
Python:笔记(2)——函数与模块
查看>>
正则表达式
查看>>
raise指令触发异常实例
查看>>
sphinx的安装配置和中文分词包coreseek
查看>>
HashMap Hashtable区别
查看>>
Oracle 11i与12R在功能上有什么区别
查看>>
Hero In Maze(BFS广搜)
查看>>
操作列表
查看>>
iOS开发之Runtime使用
查看>>
导入maven项目时出现 Version of Spring Facet could not be detected. 解决方法
查看>>
nginx https ssl 设置受信任证书[原创]
查看>>
第二个项目:WC
查看>>
PowerMock注解PowerMockIgnore的使用方法
查看>>
MySQL更新时Error Code:1093和Error Code:1175的解决办法
查看>>
最长回文字符串(manacher算法)
查看>>
js 判断是不是手机访问
查看>>
卡特兰数详讲(转)
查看>>
勇气获得机(逆向思维)
查看>>
JavaScript 浏览器对象模型(BOM)
查看>>
[LightOJ1038] Race to 1 Again
查看>>