示例實(shí)現(xiàn)一個(gè)功能烁落,將原文本轉(zhuǎn)換為目標(biāo)文本,格式如下:
源文本
last_name,name
Suarez,Maria
Guimaraes,Joao
Rush,Jennifer
Ortiz,Camila
Rodriguez,Carmen
da Silva,Zoe
目標(biāo)文本
<Rows>
<row>
<msg>Hello, Maria!</msg>
</row>
<row>
<msg>Hello, Joao!</msg>
</row>
<row>
<msg>Hello, Jennifer!</msg>
</row>
<row>
<msg>Hello, Camila!</msg>
</row>
<row>
<msg>Hello, Carmen!</msg>
</row>
<row>
<msg>Hello, Zoe!</msg>
</row>
</Rows>
通過(guò)對(duì)源文本與目標(biāo)文本的觀察幢妄,容易看出源文本是CSV格式的名單列表剧董,目標(biāo)文本是XML格式的問(wèn)候語(yǔ)幢尚,此例要做的事,就是讀取以名單列表翅楼,生成問(wèn)候語(yǔ)并轉(zhuǎn)存為XML尉剩。
A Transformation is made of Steps, linked by Hops. These Steps and Hops form paths through which data flows.
準(zhǔn)備實(shí)驗(yàn)環(huán)境
新建名為Tutorial的目錄,用于存放實(shí)驗(yàn)所需文件毅臊。新建名為list.csv的文件保存源文本理茎。
轉(zhuǎn)換預(yù)排
實(shí)驗(yàn)將完成以下三個(gè)子任務(wù):
- 新建轉(zhuǎn)換器
- 通過(guò)增加步與跳(steps and hops)設(shè)計(jì)基本的轉(zhuǎn)換流
- 為數(shù)據(jù)集與期望行為配置步驟
新建轉(zhuǎn)換器
- 點(diǎn)擊 new file 然后選擇 轉(zhuǎn)換。
- 點(diǎn)擊 以不同名稱保存轉(zhuǎn)換管嬉,將轉(zhuǎn)換保存在Tutorial目錄并命名為hello. 轉(zhuǎn)換被會(huì)被保存為hello.ktr文件皂林。
通過(guò)增加步驟與跳線(steps and hops)設(shè)計(jì)基本的轉(zhuǎn)換流
步驟是轉(zhuǎn)換中的最小單元。Kettle中有非常多的步驟蚯撩,它們被分類組織在一起础倍。每一個(gè)步驟都被設(shè)計(jì)成用于完成一個(gè)特定的功能,例如產(chǎn)生隨機(jī)數(shù)或在數(shù)據(jù)庫(kù)中插入行求厕。
跳線是以圖形表示的源與目的步之間的數(shù)據(jù)流著隆。沿跳線流動(dòng)的數(shù)據(jù)構(gòu)成了源步驟的輸出數(shù)據(jù)與目的步驟的輸入數(shù)據(jù)扰楼。一個(gè)跳線僅能有一個(gè)源與一個(gè)目的呀癣,但一個(gè)步驟可以連接多個(gè)跳線。
實(shí)驗(yàn)中的轉(zhuǎn)換將完成如下步驟:
- 讀CSV文件
- 構(gòu)造問(wèn)候語(yǔ)
- 在XML文件中保存問(wèn)候語(yǔ)
通過(guò)拖拽完成如下形式
為數(shù)據(jù)集與期望行為配置步驟
每一個(gè)步驟都有一個(gè)配置窗口弦赖,依照步驟的功能其配置窗的樣式也各不相同项栏。
配置 CSV file input 步驟
- 改變步驟名稱,鍵入 讀入名稱列表
- 點(diǎn)擊 Browse 選擇 list.csv
- 點(diǎn)擊 Get Fields蹬竖,名單的第一行被當(dāng)作列名添加在網(wǎng)格中
- Switch lazy conversion off
- 點(diǎn)擊 OK
配置 Modified JavaScript Value Step
- 代碼區(qū)鍵入
var msg = 'Hello, ' + name + "!";
- 點(diǎn)擊 Get variables
- 點(diǎn)擊 OK
配置 XML Output Step
- 點(diǎn)擊 Browser沼沈,指定一個(gè)你喜歡的名字
- 點(diǎn)擊 Fields 頁(yè)標(biāo)簽
- 點(diǎn)擊 Get Fields
- 刪除 last_name, name
- 點(diǎn)擊 Content type 選擇 Element
- OK
- CTRL-S
怎樣工作?
當(dāng)轉(zhuǎn)換執(zhí)行時(shí)币厕,所有的步驟同時(shí)異步執(zhí)行列另。
現(xiàn)在,Hello World差不多已經(jīng)完成了配置工作旦装。轉(zhuǎn)換讀取輸入文件页衙,通過(guò)JavaScript代碼為每一行創(chuàng)建一條信息,然后將信息發(fā)送到輸出文件。這是一個(gè)數(shù)據(jù)量很少的小示例店乐,所有很難注意到其是異步執(zhí)行的艰躺。但要記住,有可能在某刻一個(gè)名字已經(jīng)寫入了輸出文件眨八,而其它的還留在轉(zhuǎn)換的第一步腺兴。