上一期中大概介紹了下kettle,並已經把kettle下載安裝完了。
這一期我們就來簡單體驗下kettle怎麼進行資料轉換的。
我們這裡呢就以兩個小案例來體驗下kettle
kettle 被稱為視覺化程式語言,可以完成複雜的etl工作流。kettle裡的程式碼就是轉換和作業。
所以呢,我們首先就來說說轉換和作業。
從下面截圖中,我們看到轉換包含了很多核心物件,說明其包含了很多功能。後面有得我們學的了(開個玩笑)
--轉換包含元素 | --轉換核心物件 | |
---|---|---|
轉換(transaformation)負責資料的輸入、轉換、校驗和輸出等,kettle中轉換完成了ETL的全部工作
轉換由多個步驟 (Step) 組成。包含各種檔案格式的資料輸入/輸出 (如csv檔案輸入、sql檔案輸出、sql指令碼執行、各種查詢等等)
如果各個步驟之間需要資料庫操作,我們就需要建立DB連線
各個步驟之間使用跳(Hops)來連線。我們可以將跳理解為一條道路,資料有一個步驟(驛站)通過跳(道路)流向下一步驟(驛站)
kettle中最小的資料單元是行
步驟是轉換裡的基本組成部分,上面截圖中包含了兩個步驟
①CSV檔案輸入
②Excel輸出
每個步驟都會涉及到讀、寫資料行
步驟將資料寫到與之相連的一個或多個輸出跳(hop),再傳送到跳的另一端的步驟
大多數的步驟都可以有多個輸出跳。一個步驟的資料傳送可以被設定為分發和複製
跳是兩個步驟(驛站)之間的道路(帶箭頭的連線)
跳是兩個步驟之間的資料行快取
當行集滿了,向行集寫資料的步驟將停止寫入,直到行集裡又有了空間。
當行集空了,從行集讀取資料的步驟停止讀取,直到行集裡又有可讀的資料行
可以通過如下方式檢視和修改行快取大小
①右鍵轉換-->設定 | ② 選擇"雜項"tab頁 |
---|---|
每個步驟在輸出資料行時都有對欄位的描述,這種描述就是資料行的後設資料
通常包含下面一些資訊。
①名稱:資料行裡的欄位名是唯一的。
②資料型別:欄位的資料型別。
③格式:資料顯示的方式,如Integer的#、0.00。
④長度:字串的長度或者BigNumber型別的長度。
⑤精度:BigNumber資料型別的十進位制精度。
⑥貨幣符號:¥
⑦小數點符號:十進位制資料的小數點格式。不同文化背景下小數點符號是不同的,一般是點(.)或逗號(,)。
⑧分組符號:數值型別資料的分組符號,不同文化背景下數位裡的分組符號也是不同的,一般是點(.)或逗號(,)或單引號(’)
這裡的輸入檔案十csv格式資料,所以分組符號是逗號","
資料以資料行(可以理解為一個表格中的一行) 的形式沿著步驟移動,每個資料行又有多個欄位元素(可以理解為一個單元格)構成
就像在excel中,每個單元格都可以設定資料格式一樣,這裡資料行中的欄位也有自己的資料型別.
常見的資料型別有以下幾種
--資料型別 | --說明 |
---|---|
String |
字元型別資料 |
Number |
雙精度浮點數 |
Integer |
帶符號長整型(64位元) |
BigNumber |
任意精度資料 |
Date |
帶毫秒精度的日期時間值 |
Boolean |
取值為true和false的布林值型別 |
Binary |
二進位制欄位可以包含影象、聲音、視訊及其他型別的二進位制資料 |
我們經常需要處理大量的資料,所以設計了跳這樣的行集快取規則,使得每個步驟就是一個獨立執行緒.所有步驟都以並行方式執行.
當轉換啟動後,所有步驟都同時啟動,從它們的輸入跳中讀取資料,並把處理過的資料寫到輸出跳.
直到輸入跳裡不再有資料,就中止步驟的執行。
當所有的步驟都中止了,整個轉換就中止了
如果想要一個任務沿著指定的順序執行,那麼就要使用下面所講的「作業」來做流程控制
負責定義一個完成整個工作流的控制,如將轉換的結果傳送郵件給相關人員.
因為轉換(transformation)以並行方式執行,所以必須存在一個序列的排程工具來執行轉換,這就是 Kettle中的作業
核心物件-->輸入-->CSV檔案輸入 (將控制元件拖入工作區)
① 選擇CSV檔案輸入控制元件 | ②將控制元件拖入工作區 |
---|---|
③ 選擇原始檔 | ④ 檢查csv資料是否正常讀出 |
① 選擇Excel輸出控制元件 | ②將控制元件拖入工作區 |
---|---|
③ 設定輸出檔名 | |
①紀錄檔沒報錯 | ②檔案也寫入成功了 |
---|---|
由於案例2需要涉及到MySQL資料庫,所以我們需要建立DB連線
①下載MySQL驅動(需要下載對應版本的) 我用的是MySQL5.7 ,所以這裡下載5.1.37 版本驅動
官方地址:https://downloads.mysql.com/archives/c-j/
② 將下載的好的MySQL驅動包放入lib資料夾下
③新建DB連線
注: 如果沒有下載驅動包或者驅動包版本與MySQL版本不一致,會包如下錯誤
① 將Excel輸入控制元件拖入工作區
②設定Excel輸入控制元件
直到點選預覽記錄後獲取到如下截圖所示資料,說明輸入設定成功了
① 將表輸出控制元件拖入工作區
② 通過跳 將輸入輸出控制元件連線起來
③設定需要匯入資料的目標表
④ 匹配資料庫欄位
①紀錄檔顯示轉換成功
② 我們再來看看資料庫test的t_tv 表中也有資料了
到此通過兩個案例小試牛刀之後都轉換成功了,是不是有點小成就感呢。
其實這只是kettle工具的冰山一角,從kettle那麼多核心物件可以看得出來,它還有很多很多很多得玩法等著我們去開啟。
本期內容到此就結束了,希望內容對你有所幫助,我們下期再見 (●'◡'●)
上一篇:快速上手kettle(一)壺之簡介
下一篇:快速上手kettle(三):kettle常用輸入控制元件使用(小編正在玩命更新中)