kettle菜鳥學習筆記2----第一個kettle轉換的建立及執行


相關概念

Kettle數據清洗是采用元數據(Meta-data)驅動,以數據流的方式進行的,數據從數據源(數據庫/文件等)在一系列相連的step之間依次向后流動,各個step完成對流經該step的數據進行需要的處理工作。

Kettle中的數據轉換組件按粒度從小到大分為Step、Trans、Job

Step:是完成單一具體功能的組件,如從文件中讀取數據、對流中的字段進行字符串拆分操作、對不能為空的字段設置相應默認值、將流中的數據寫入到數據表等。

Trans:轉換,一般最終清洗完成的數據庫中有多少個標准表,就要有多少個Trans,通常與表是一一對應的。

Trans由多個Step組成,Step之間使用hop連接,實現數據在Step之間的流動,一系列Step的連接從而完成更復雜的轉換。

 

Job:作業,由多個Trans組成,表示一次完整的數據清洗任務。

 

kettle的使用:

新建一個轉換

1新建空白轉換

文件—>新建—>轉換 :新建一個空白的轉換,ctrl+s保存該轉換,命名為標准表的表名;

2添加數據庫連接

 

在主對象樹中,雙擊DB連接,或右擊DB連接,選擇新建數據庫連接,打開數據庫連接對話框:

 

 其中Oracle數據庫連接中的數據表空間,索引表空間兩項不需要填。其余參數必填,填好之后點測試,檢測是否能正確連接,連接成功后,點確認,便保存了當前連接。

其實,可以隨時在需要的時候建立數據庫連接,而不必剛開始就添加。

3添加需要的step

 

在核心對象的各個分組中,找到需要的step,雙擊,或者拖拽到右側設計界面,即可添加step到當前轉換中。

簡單示例:新建一個轉換,實現生成10000條測試數據,存放到mysql中的表t1中,t1只有兩個字段,一個是整型,一個是varchar。

step1:新建一個空白轉換,保存,文件名為data_gen.ktr

step2:在核心對象樹中找到“輸入”分組中的“生成記錄”這個Step,並拖放到右邊的工作區中

 

Step3:在“轉換”分組中,找到“添加序列”,並拖放到工作區中

 

Step4:在“輸出”分組中,找到“表輸出”Step,並拖放到工作區中

 

Step5:單擊選中“生成記錄”,然后按住shift+鼠標左鍵,拖至“增加序列”,如此,便在這兩個Step中建立了一個Hop,將這兩個Step鏈接起來,注意hop是有向的。

同樣的方法鏈接“增加序列”和“表輸出”

 

Step6:雙擊“生成記錄”配置該Step的元數據信息:

 

如圖中的修改,步驟名稱更改為“生成字符串”;限制改為“10000“,表示生成10000條記錄;字段列表中,如圖填寫,名稱隨意,類型在下拉列表中選擇String,值填寫”aaaa”,其他留空,不要填寫。然后,點擊確定即可。

Step7:雙擊“增加序列”,配置其元數據信息:

 

如圖填寫:值的名稱即為當前添加字段的名稱,使用計數器來生成序列,會生成從1遞增的序列,可以修改起始值即步長。最大值可以修改為10000,不設置也行,因為它之前的Step結束后,它也跟着結束了。

Step8:雙擊表輸出,配置其元數據信息:

 

點數據庫連接后面的“新建”按鈕,即為創建一個數據庫連接。

 

根據自己數據庫的實際情況,設置上述信息,最好點擊下連接測試,防止信息填寫錯誤。

 

測試通過,后確認即可保存該數據庫連接,此時表輸出設置窗口的數據庫連接自動填上了剛才建立的連接:

 

點擊目標表后的“瀏覽”按鈕,選擇要存放數據的表:

 

如上圖,我選擇了t1表存放生成的數據。

提交記錄數量,是每多少條數據提交一次,這里可以默認。

勾選指定數據庫字段,否則下面沒法設置:

 

然后切換到數據庫字段選項卡,點擊輸入字段映射,會自動獲取流入該Step中數據的各個字段名,以及該表中的字段名。

 

 

點擊源字段中的某個字段,然后點擊目標中的某個字段,然后點擊add按鈕,表示兩者之間建立了一個映射,該源字段的值都存在對應的目標字段中。當源字段與目標字段的名字有相同字符串時,可以使用猜一猜,自動匹配,不過不保證准確性。

 

匹配完成,點擊確定。

如上,這個轉換就建立完成了,注意Ctrl+S保存。

Step9:運行該轉換,查看結果:

點擊:三角形按鈕,表示執行

 

在彈出的窗口中,點“啟動”即可。

成功執行后,出現如下信息:若失敗,會出現紅色的“×”,並且會在下面日志中記錄錯誤的Step及錯誤信息。

 

查看t1表中有無數據:

 

 

如上,便成功生成了10000條測試數據。

 


免責聲明!

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



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