kettle 增量更新

2021-06-06 19:34:08 字數 1249 閱讀 2828

後面的乙個問號就是表示它需要接受乙個引數,你在這個table input 下面需要指定replace variable in script 選項和execute for each row 為選中狀態,這樣,kettle就會迴圈執行這個sql , 執行的次數為前面引數步驟傳入的資料集的大小。

kettle執行這個步驟是需要兩個資料流對比,其中乙個是目標資料庫,你在target table 裡面指定的,它放在the keys to look up the values(s) 左邊的table field 裡面的,另外乙個資料流就是你在前乙個步驟傳進來的,它放在the keys to look up the value(s) 的右邊,kettle首先用你傳進來的key 在資料庫中查詢這些記錄,如果沒有找到,它就插入一條記錄,所有的值都跟你原來的值相同,如果根據這個key找到了這條記錄,kettle會比較這兩條記錄,根據你指定update field 來比較,如果資料完全一樣,kettle就什麼都不做,如果記錄不完全一樣,kettle就執行乙個update 步驟。所以首先你要確保你指定的key欄位能夠唯一確定一條記錄,這個時候會有兩種情況:

1.維表

2.事實表

維表大都是通過乙個主鍵欄位來判斷兩條記錄是否匹配,可能我們的原資料庫的主鍵記錄不一定對應目標資料庫中相應的表的主鍵,這個時候原資料庫的主鍵就變成了業務主鍵,你需要根據某種條件判斷這個業務主鍵是否相等,想象一下如果是多個資料來源的話,業務主鍵可能會有重複,這個時候你需要比較的是根據你自定義生成的新的實際的主鍵,這種主鍵可能是根據某種類似與sequence 的生成方式生成的,

事實表在經過轉換之後,進目標資料庫之前往往都是通過多個外來鍵約束來確定唯一一條記錄的,這個時候比較兩條記錄是否相等都是通過所有的維表的外來鍵決定的,你在比較了記錄相等或不等之後,還要自己判斷是否需要新增乙個新的主鍵給這個新記錄。

上面兩種情況都是針對特定的應用的,如果你的轉換過程比較簡單,只是乙個原資料庫對應乙個目標資料庫,業務主鍵跟**主鍵完全相同的時候完全可以不用考慮這麼多。

kettle教程 增量更新

以下操作都在5.0.1版本下進行開發,其餘版本可以進行自動比對 在平時工作當中,會遇到這種情況,而且很常見。比如 增量抽取 每隔2個小時抽取截至到上次抽取時間的記錄 一 操作前提 存在3張表,源表 t student 同步日誌表 t tbrz 插入表 t target student 表結構如下圖所...

Kettle 增量更新設計技巧

有刪除,有增加,有更新 首先你需要判斷你是否在處理乙個維表,如果是乙個維表的話,那麼這可能是乙個scd情況,可以使用kettle的dimension lookup 步驟來解決這個問題,如果你要處理的是事實表,方法就可能有所不同,它們之間的主要區別是主鍵的判斷方式不一樣。事實表一般都資料量很大,需要先...

關於kettle時間戳增量更新

之前看到的一篇文章kettle實現資料實時增量同步,這位大佬提出了時間戳增量回滾同步的一種方式,我是根據這篇文章之上進行探索的。但是遇到了一些問題,這裡進行一下記錄 只能同步往前 day這段時間內的刪除操作,因為回滾了一段時間 day,作者也宣告了這點 也只能同步往前 day這段時間內的刪除操作,為...