30天學會Data Integration - Kettle系列 第 22 篇 - Step - 取得系統資訊並寫入資料庫

 本篇要介紹的是有關日期資訊取得的Step:[Input]Get System Info,另外要介紹Step:[Flow]Filter rows來輔助資料分類的動作。

[Input]Get System Info 介紹

取得系統資訊,例如日期或參數

[Flow]Filter rows 介紹

使用簡單的條件式來過濾資料,可使用上一個Step中的欄位來進行條件式的設定,可以選擇以欄位值或是以指定的輸入值做比對。

本篇目標

延續上一篇的例子,將更新項目的更新時間欄位寫入今日的日期,新增項目的新增欄位寫入今日的日期,由於Northwind資料庫的Shippers沒有新增與更新日期的欄位,所以需要自行增加CreateTime與UpdateTime欄位喔!



然後補上日期資訊



新增與設定[Input]Get System Info

新增Get System Info並建立Hop,兩點下進行設定,請輸入名稱與類型



類型的部分,提供了許多有關於Kettle執行環境的參數讓我們選取,大多都是有關於日期的部分,本篇請選擇system date (variable)



預覽設定的結果,成功取得日期參數



新增與設定Filter rows

新增Filter rows並建立Hop,點兩下進行設定,在這邊我們要來設定過濾的條件,要先把新增的資料與更新的資料區分開來,這樣才能判斷在執行Insert / Update時,要更新的是CreateTime還是UpdateTime;判斷是否為新增資料與更新資料的關鍵,就是ID欄位,所以我們要把ID=null的資料過濾出來



新增Insert/Update

新增兩個Insert/Update,一個用來做資料的新增,另一個是拿來做資料的更新,在建立Hop時要特別留意一下,記得選對true與false的流向,我們要把ID=null的資料傳到"新增資料"的Step,把ID!=null的資料傳到"更新資料"的Step



設定"新增資料"Step

設定方式可以參考前一篇,以下的設定差別在於Don't perform any updates有勾選,因為此Step我們只希望它執行Insert的動作,所以勾選Don't perform any updates,以及將today欄位值指定給CreateTime欄位



設定"更新資料"Step

將today欄位值指定給UpdateTime欄位



執行Transformation



檢視Shippers資料表

完成3筆資料的電話欄位更新,並且記錄了資料更新的時間,另外新增了3筆的資料,一樣也有紀錄新增的時間




到本篇為止,想必大家應該對Transformation的設定都很熟悉了吧!接下來將會進一步的針對Job的部分來做介紹囉!


留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明