1. 程式人生 > >ETL工具kettle怎麽進行增量數據抽取:一、通過標誌位

ETL工具kettle怎麽進行增量數據抽取:一、通過標誌位

text term ESS log 繼續 需要 roc 默認值 RoCE

在平時的操作過程中可能大家需要經常進行增量的數據抽取,方法有很多種,接下來幾天講給大家介紹幾種我本人經常使用的幾種方式;
首先給大家介紹我最喜歡的一種,就是通過標誌位;
操縱方法如下,在源表中增加一個標識字段,比如tongbu,當然可以為它設個默認值N,然後我們再增加一個索引nvl(tongbu,‘N’),增加索引是為了提高查詢的速度,接下來我們來寫具體的流程;
技術分享圖片
我寫的這個流程非常簡單,有的朋友們會非常疑惑為什麽我會有更新組件,先賣個關子咱們繼續;
在寫 表輸入中的sql時,我們引入了一個偽列gx,並賦值Y,這有什麽有呢,繼續看;
技術分享圖片
大家可以看到我在表輸入的sql中特意框起來兩塊,where條件後面的就用到了我們之前建的索引,這個語句的邏輯解釋為當tongbu這個字段的值為空或者為N的時候我們認為這些數據是未同步到目標表的;
當原表中的數據同步到目標表之後我們回頭將偽列gx的值(Y)賦給這條數據的標誌位tongbu,那麽這時tongbu的值就變成了Y,此時我們就認為這條數據已經同步到目標標了,在下一個執行計劃中就不會繼續同步它;如圖
技術分享圖片

這種方法的好處是非常直觀,你可以通過標誌位可以很清楚的知道這條數據有沒有同步,特別是需要頻繁同步的時候;
當然缺點也是很明顯的,會對原表造成一定的壓力,並且速度可能會收到一定的影響;

如果有什麽迷糊,可以給我留言(這種方法理解起來稍微有一點點壓力);
其實一句話:根據狀態為確定有沒有同步,沒同步的同步後修改狀態位;

ETL工具kettle怎麽進行增量數據抽取:一、通過標誌位