ELT工具Kettle之CDC(Change Data Capture)實現實例


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

!由於這個涉及到具體項目的使用:該實例完成的是實時捕獲數據到結果表,由於中間涉及到一個數據的處理步驟,所以看上去比較繁瑣了。大家只要明白這個數據抽取的原理就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM