Kettle 是一款采用純 Java 實(shí)現(xiàn)的開源 ETL工 具刘离,屬于開源商務(wù)智能軟件 Pentaho 的一個(gè)重要組成部分臼婆。項(xiàng)目在 SourceForge 上的地址為:https://sourceforge.net/projects/pentaho/?source=directory腰根。鑒于 SourceForge 在國內(nèi)不能下載新翎,需要下載請移步到鏡像網(wǎng)站缓醋。軟件本身是免安裝的署鸡,解壓即可用案糙,當(dāng)然操作系統(tǒng)要安裝和配置好 Java 環(huán)境。
Kettle PDI (Penhato Data Integration) 支持用拖拉的方式靴庆,實(shí)現(xiàn)復(fù)雜的 ETL 邏輯时捌。本系列計(jì)劃介紹 Kettle PDI 的主要功能,力求簡明易懂炉抒。使用的 Kettle PDI 版本是 PDI 7.1奢讨,在 Windows 10 下運(yùn)行。
Spoon
Penhato PDI 包含不少的工具箱焰薄,首先需要了解的是 Spoon拿诸,Spoon 是 Kettle 的圖形化界面,在 Penhato 的安裝目錄下可以看到有一個(gè)叫 Spoon.bat 的文件(Linux 下是 Spoon.sh)塞茅,雙擊這個(gè)就可以啟動(dòng)我們的kettle程序亩码。
Kettle 主要的工具有兩個(gè):
轉(zhuǎn)換 (Transformation): 負(fù)責(zé)數(shù)據(jù)的輸入、轉(zhuǎn)換野瘦、校驗(yàn)和輸出等工作描沟。Kettle 中使用轉(zhuǎn)換(transformation)完成數(shù)據(jù) ETL 全部工作。轉(zhuǎn)換由多個(gè)步驟 (step) 組成鞭光,如文本文件輸入啊掏,過濾輸出行,執(zhí)行 SQL 腳本等衰猛。各個(gè)步驟使用跳 (hop) 來鏈接迟蜜。 跳定義了一個(gè)數(shù)據(jù)流通道,即數(shù)據(jù)由一個(gè)步驟流 (跳) 向下一個(gè)步驟啡省。在 Kettle 中數(shù)據(jù)的最小單位是行(row)娜睛,數(shù)據(jù)流中流動(dòng)其實(shí)是緩存的行集 (RowSet) 髓霞。
作業(yè) (Job),負(fù)責(zé)定義一個(gè)完成整個(gè)工作流的控制畦戒,比如將轉(zhuǎn)換的結(jié)果發(fā)送郵件給相關(guān)人員方库。因?yàn)檗D(zhuǎn)換(transformation)以并行方式執(zhí)行,所以必須存在一個(gè)串行的調(diào)度工具來執(zhí)行轉(zhuǎn)換障斋,這就是 Kettle中的作業(yè)纵潦。
讀取 CSV 文件
假設(shè)我們的目的是讀取 CSV 文件,在 Excel 中輸出垃环。當(dāng)然邀层,這種簡單操作完全不需要 Kettle,Excel 直接就可以打開并轉(zhuǎn)換遂庄。練習(xí)的目的是從易到難寥院,逐步掌握 Kettle 的用法。
CSV 文件是一種常見的文本文件涛目,一般含有表頭和行項(xiàng)目秸谢。大多數(shù)數(shù)據(jù)處理型軟件都含有對(duì) CSV 格式的支持。進(jìn)入 Spoon 的主界面霹肝,通過菜單 [文件] - [新建] - [轉(zhuǎn)換] 新建一個(gè)轉(zhuǎn)換估蹄。
在左邊的核心對(duì)象中,找到輸入文件夾下面的CSV文件輸入沫换,將其拖到右邊的工作區(qū)元媚。雙擊CSV文件輸入圖標(biāo),通過瀏覽按鈕找到 想要讀取的 CSV 文件:
點(diǎn)擊對(duì)話框中的 “獲取字段” 按鈕苗沧,自動(dòng)獲得 CSV 文件各列的表頭刊棕。之所以可以這樣,是因?yàn)?“包含列頭行” 默認(rèn)選中待逞。點(diǎn)擊 “預(yù)覽” 按鈕可以預(yù)覽數(shù)據(jù)甥角。如果是中文,注意文件的編碼识樱。
在左邊導(dǎo)航區(qū)的 “輸出” 文件夾下嗤无,將 “Excel輸出” 步驟拖放到右邊的工作區(qū)。選中步驟 “CSV文件輸入”怜庸,通過 shift+鼠標(biāo)拖動(dòng)当犯,連接兩個(gè)步驟,此時(shí)界面如下:
雙擊 “Excel輸出”割疾,設(shè)置文件名和擴(kuò)展名:
切換到 “字段” 頁簽嚎卫,點(diǎn)擊 “獲取字段” 按鈕,獲取需要輸出的字段宏榕,可以刪除不想要的字段拓诸,然后點(diǎn)擊 “確定” 按鈕:
運(yùn)行之前保存侵佃,轉(zhuǎn)換被保存為擴(kuò)展名為 ktr 的文件,這個(gè)文件是 xml 格式的文本文件奠支,可以用 spoon 打開馋辈。然后點(diǎn)擊 “運(yùn)行”,即可以將 CSV 文件轉(zhuǎn)換成 Excel 文件倍谜。
多個(gè)文件輸入
在導(dǎo)航區(qū) “核心對(duì)象” 中迈螟,找到 “輸入” 文件夾下 “獲取文件名”,拖到工作區(qū)尔崔。設(shè)置如下:
點(diǎn)擊 “預(yù)覽記錄” 按鈕答毫,查看包含的文件,兩個(gè)文件都被讀取到您旁。filename
是在下一步要使用的文件路徑烙常,屬于輸出的變量轴捎。
將 “獲取文件名” 步驟連接至 “CSV文件輸入” 步驟鹤盒。此時(shí),“CSV文件輸入” 步驟的界面中侦副,文件名字段為數(shù)據(jù)來源于前一步驟侦锯,選擇 filename
。其他相同秦驯。
運(yùn)行尺碰,可以把兩個(gè) CSV 文件中的數(shù)據(jù)加載并輸出到 Excel 文件中。輸入的文件格式译隘,比如文本文件亲桥、Excel 文件大體類似。