30天學會Data Integration - Kettle系列 第 14 篇 - Step - 字串組合與欄位調整
延續上一篇,此篇將繼續介紹如何將拆解的日期重新合併,接下來的操作會比較繁瑣,但如果都能跟得上的話,就代表你對Kettle的操作熟練度又更上一層樓囉!此篇會介紹到[Transform]Select Values與[Transform]String operations
[Transform]Select Values介紹
Select Values是一個專門處理刪除欄位、重新命名欄位與選擇欄位的Step、主要分成三種類型:
- Select and Alter:可以指定欄位的順序、名稱、長度與數字的小數點長度
- Remove:可刪除指定的欄位
- Meta-data:可以更改欄位名稱、類型、長度、格式、編碼、貨幣符號等等...
[Transform]String operations介紹
String operations可以針對字串來做填位、或是大小寫的調整
本篇目標
將上一篇分隔的民國年、月與日欄位做字串相加,得到一個民國年的生日欄位,例如:76/05/22
有六大步驟:
- 將年月日轉成字串:將數字轉字串,以便組合文字
- 將月與日以0補足2位數:將個位數的月份與日期補0
- Add constants:新增日期分隔符號
- 組成民國日期:組合日期字串
- 刪除欄位:移除不需要的欄位
- 重新命名欄位
步驟1:將年月日轉成字串:將數字轉字串
因為要做字串的相加,必須把原本的民國年、月、日的型態從Integer改為String
新增Select Values
建立Hop
設定Select Values
將民國年、月、日的型態改為String
步驟2:將月與日以0補足2位數
因為月份與日是Integer型態,所以1月份會以1顯示,但這樣會造成後續組成完整日期時會少一個字串的長度,所以我們必須盡行補位的處理
新增String operations
建立Hop
設定String operations
Trim type:修剪的類型
Padding:向左填充或向右填充
Pad char:指定填充的文字
Pad Length:指定填充的長度
預覽String operations
可以觀察看月與日已經完成補0囉
步驟3:新增日期分隔符號
我們會使用/來進行字串的相加,所以需要在新增一個常數,覺得要使用哪個Step呢?就是前一篇提到的Transform[Add constants]
設定 Add constants
步驟4:組合日期字串
將民國年、月、日與日期分隔符號來進行字串的組合,一樣是使用到前一篇的Calculator
新增 Calculator 與建立 Hop
設定 Calculator
由於Calculator只提供3種欄位的相加,所以必須進行兩次的運算才能得到完整的年月日與分格符號的加總,設定方式如下圖
預覽 Calculator
步驟5:刪除不需要的欄位
由於資料處理的過程,一定會透過一些額外的欄位來輔助,而已經使用完畢的欄位,一直出現在眼前也是挺干擾的,所以我們就來把這些欄位通通都拿掉,保留必要的資訊就好。
新增Select Values、建立Hop、設定Select Values
請切換到Remove頁籤,將不需要的欄位給移除掉,說白一點就是,把沒有利用價值的欄位都刪掉XD
預覽Select Values
步驟6:重新命名欄位名稱
在這邊,會發現我把所有的Step名稱都打上描述了,方便我們了解整個處理的邏輯,修改名稱設定方式就是點兩下Step,在Step name上進行文字輸入即可,回歸正題,我們想把"民國年月日"的欄位名稱改成"生日"
新增Select Values、建立Hop、設定Select Values
請切換到Select & Alter頁籤,按一下Get Fields to select,來選擇我們要顯示的欄位,並且在第4項的Rename to上輸入"生日"
預覽Select Values
終於!完成了民國年月日的轉號囉
我想有些人看到這邊已經吐血了,感覺這種東西就Excel套用公式一下就做完了,幹嘛用Kettle在那邊設定一大堆勒!的確,如果是這種需求我也絕對不會用Kettle做XDDDD(被扁),啊...就是個操作範例讓大家感受一下[Transform]中的Add constants、Calculator、Select Values、String operations的功能,其實看似功能很簡單的Step,在後續其實都會發揮很大的功用,而在這兩篇的操作中,大家又認識了一些Step,當我們認識的Step越多時,可以應用的範圍就又更廣囉!
下一篇將繼續介紹以上這些Transform將如何直接用[Scripting]Modified Java Script Value值接通通取代掉XD,有好東西幹嘛不早講(再次被打),不過有瞭解才有選擇,如果不會寫js就可以透過這兩篇的方式去進行一些資料的分析運算與組合,如果會寫js,那Modified Java Script Value就是另外提供另外一種資料處理的方式,各有優點缺,大家可以在自行評估自己適合哪一種。
留言
張貼留言