30天學會Data Integration - Kettle系列 第 16 篇 - Step - 數值對應與欄位排序

 此篇要介紹兩個使用率也蠻高的Step,[Transform]Value Mapper與[Transform]Sort rows

[Transform]Value Mapper介紹

經常使用的的情況就類似性別的男女要轉換成10或是FM,提供一個代碼對照表,讓符合的文字轉換成另外指定的代碼,經常使用於存入資料庫之前的資料轉換

[Transform]Sort rows介紹

可指定欄位進行升冪或降冪

本篇目標:將血型轉換成代碼並根據年齡排序

A、B、O、AB將轉換成1、2、3、4





新增 Value Mapper

請新增Value Mapper並建立Hop





設定 Value Mapper

建立對應規則



預覽 Value Mapper

血型欄位已變成指定的代碼



新增Sort rows

接下來要針對年齡來進行排序,請新增Sort rows並建立Hop



設定Sort rows

選擇年齡欄位



預覽Sort rows

年齡由小排到大



同場加映:使用Modified Java Script Value達成代碼轉換

Modified Java Script Value真的是好物,不過如果過度使用,反而在維護Transformation上會比較困難,如果透過功能各自獨立的Step來處理,各司其職,反而提高了易讀性。

新增Modified Java Script Value

在建立Hop時會出現提示框,請選擇Copy,這樣此Step才會拿到上一個Step的所有資料;如果是選擇Distribute,那上一個Step的資料,會在Value Mapper與Modified Java Script Value之間輪流傳遞,也就是說Excel Step總共有三筆資料,往後傳遞資料時,Value Mapper只會拿到2筆資料,而Modified Java Script Value只會拿到1筆資料,兩個Step加起來就拿到3筆資料



設定Modified Java Script Value

使用javascript自己寫代碼的判斷邏輯



var 血型;
if(血型=="A"){
	血型="1";
}else if(血型=="B"){
	血型="2";
}else if(血型=="O"){
	血型="3";
}else if(血型=="AB"){
	血型="4";
}

預覽Modified Java Script Value

一樣完成了數值對應。下圖的橘色圈圈中的icon則是代表Hop是使用Copy的方式在傳遞資料




這幾篇都是比較著重在資料的基本處理,下一篇會介紹如何將處理完畢的資料進行匯出

參考資料:https://anotherreeshu.wordpress.com/2015/01/02/copy-data-and-distribute-data-in-pentaho-data-integration-kettle/


留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明