快速上手kettle(二)小試牛刀

2023-05-29 09:01:16

一 、前言

上一期中大概介紹了下kettle,並已經把kettle下載安裝完了。

這一期我們就來簡單體驗下kettle怎麼進行資料轉換的。

二 、兩個小目標

我們這裡呢就以兩個小案例來體驗下kettle

  • 將csv檔案通過kettle轉換成excel檔案
  • 將excel檔案通過kettle寫入到資料庫表中

三、 kettle核心概念介紹

kettle 被稱為視覺化程式語言,可以完成複雜的etl工作流。kettle裡的程式碼就是轉換和作業。

所以呢,我們首先就來說說轉換和作業。

3.1 轉換

從下面截圖中,我們看到轉換包含了很多核心物件,說明其包含了很多功能。後面有得我們學的了(開個玩笑)

--轉換包含元素 --轉換核心物件
  • 轉換(transaformation)負責資料的輸入、轉換、校驗和輸出等,kettle中轉換完成了ETL的全部工作

  • 轉換由多個步驟 (Step) 組成。包含各種檔案格式的資料輸入/輸出 (如csv檔案輸入、sql檔案輸出、sql指令碼執行、各種查詢等等)

  • 如果各個步驟之間需要資料庫操作,我們就需要建立DB連線

  • 各個步驟之間使用跳(Hops)來連線。我們可以將跳理解為一條道路,資料有一個步驟(驛站)通過(道路)流向下一步驟(驛站)

  • kettle中最小的資料單元是

3.1.1 步驟(Step)

步驟是轉換裡的基本組成部分,上面截圖中包含了兩個步驟
CSV檔案輸入
Excel輸出

  • 每個步驟都會涉及到資料行

  • 步驟將資料寫到與之相連的一個或多個輸出跳(hop),再傳送到跳的另一端的步驟

  • 大多數的步驟都可以有多個輸出跳。一個步驟的資料傳送可以被設定為分發複製

3.1.2 跳(Hop)

是兩個步驟(驛站)之間的道路(帶箭頭的連線)

  • 是兩個步驟之間的資料行快取

  • 當行集滿了,向行集寫資料的步驟將停止寫入,直到行集裡又有了空間

  • 當行集了,從行集讀取資料的步驟停止讀取,直到行集裡又有可讀的資料行

可以通過如下方式檢視和修改行快取大小

①右鍵轉換-->設定 ② 選擇"雜項"tab頁
3.1.3 元素據

每個步驟在輸出資料行時都有對欄位的描述,這種描述就是資料行的後設資料

通常包含下面一些資訊。

名稱:資料行裡的欄位名是唯一的。

資料型別:欄位的資料型別。

格式:資料顯示的方式,如Integer的#、0.00。

長度:字串的長度或者BigNumber型別的長度。

精度:BigNumber資料型別的十進位制精度。

貨幣符號:¥

小數點符號:十進位制資料的小數點格式。不同文化背景下小數點符號是不同的,一般是點(.)或逗號(,)。

分組符號:數值型別資料的分組符號,不同文化背景下數位裡的分組符號也是不同的,一般是點(.)或逗號(,)或單引號(’)

這裡的輸入檔案十csv格式資料,所以分組符號是逗號","

3.1.4 資料型別

資料以資料行(可以理解為一個表格中的一行) 的形式沿著步驟移動,每個資料行又有多個欄位元素(可以理解為一個單元格)構成

就像在excel中,每個單元格都可以設定資料格式一樣,這裡資料行中的欄位也有自己的資料型別.

常見的資料型別有以下幾種

--資料型別 --說明
String 字元型別資料
Number 雙精度浮點數
Integer 帶符號長整型(64位元)
BigNumber 任意精度資料
Date 帶毫秒精度的日期時間值
Boolean 取值為true和false的布林值型別
Binary 二進位制欄位可以包含影象、聲音、視訊及其他型別的二進位制資料

3.1.5 並行執行

我們經常需要處理大量的資料,所以設計了這樣的行集快取規則,使得每個步驟就是一個獨立執行緒.所有步驟都以並行方式執行.

當轉換啟動後,所有步驟都同時啟動,從它們的輸入跳中讀取資料,並把處理過的資料寫到輸出跳.

直到輸入跳裡不再有資料,就中止步驟的執行。

當所有的步驟都中止了,整個轉換就中止了

如果想要一個任務沿著指定的順序執行,那麼就要使用下面所講的「作業」來做流程控制

3.2 作業

負責定義一個完成整個工作流的控制,如將轉換的結果傳送郵件給相關人員.

因為轉換(transformation)以並行方式執行,所以必須存在一個序列的排程工具來執行轉換,這就是 Kettle中的作業

四、實踐操作

4.1 案例1 將csv檔案轉換成excel檔案

4.1.1 在kettle中新建一個轉換

4.1.2選擇輸入控制元件並設定

核心物件-->輸入-->CSV檔案輸入 (將控制元件拖入工作區)

① 選擇CSV檔案輸入控制元件 ②將控制元件拖入工作區
③ 選擇原始檔 ④ 檢查csv資料是否正常讀出
4.1.3 選擇輸出控制元件並設定
① 選擇Excel輸出控制元件 ②將控制元件拖入工作區
③ 設定輸出檔名
4.1.4 按住shift 通過將輸入輸出兩步驟連線起來

4.1.5 點選啟動按鈕執行轉換

4.1.6檢視紀錄檔,並檢查是否成功
①紀錄檔沒報錯 ②檔案也寫入成功了

4.2 案列2 將excel檔案匯入MySQL資料庫

4.2.1和上面步驟一樣我們需要新建一個轉換

4.2.2 新建資料庫連線

由於案例2需要涉及到MySQL資料庫,所以我們需要建立DB連線

①下載MySQL驅動(需要下載對應版本的) 我用的是MySQL5.7 ,所以這裡下載5.1.37 版本驅動

官方地址:https://downloads.mysql.com/archives/c-j/

② 將下載的好的MySQL驅動包放入lib資料夾下

③新建DB連線

注: 如果沒有下載驅動包或者驅動包版本與MySQL版本不一致,會包如下錯誤

4.2.3 拖入Excel輸入控制元件並設定

① 將Excel輸入控制元件拖入工作區

②設定Excel輸入控制元件

直到點選預覽記錄後獲取到如下截圖所示資料,說明輸入設定成功了

4.2.4 拖入表輸出控制元件並設定

① 將表輸出控制元件拖入工作區

② 通過 將輸入輸出控制元件連線起來

③設定需要匯入資料的目標表

④ 匹配資料庫欄位

4.2.5 點選啟動按鈕進行轉換

4.2.6 檢視紀錄檔並檢查MySQL資料表中是否有資料

①紀錄檔顯示轉換成功

② 我們再來看看資料庫test的t_tv 表中也有資料了

到此通過兩個案例小試牛刀之後都轉換成功了,是不是有點小成就感呢。

其實這只是kettle工具的冰山一角,從kettle那麼多核心物件可以看得出來,它還有很多很多很多得玩法等著我們去開啟。

本期內容到此就結束了,希望內容對你有所幫助,我們下期再見 (●'◡'●)

上一篇:快速上手kettle(一)壺之簡介
下一篇:快速上手kettle(三):kettle常用輸入控制元件使用(小編正在玩命更新中)