iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 13
0
Big Data

30天學會Data Integration - Kettle系列 第 13

Step - 處理日期的運算

  • 分享至 

  • xImage
  •  

此篇要介紹與數學運算有關的Step:[Transform]Calculator,顧名思義,就是計算機的功能,提供了很多現成的公式來套我們進行套用,後續介紹的Step中有些也可以達到運算的功能,但是會比較複雜一些,會需要寫一點點的程式,但是Calculator完全是透過設定的方式,所以非常的簡單易用,其中也會順便帶到[Transform]Add constants來輔助我們進行民國年的計算。

目標 - 將西元年轉民國年

在前三篇的文章中,透過讀取CSV、Excel與Table的方式將準備好的資料讀入,準備好的資料中,包含一個生日的欄位,通常看到生日,就會有一種預感,肯定是又要處理民國年與西元年的問題了,這個問題在資料庫規劃時,有些人會直接開date型態來存西元年的格式(ex:2016/12/28),有些則是直接開nvarchar(7)來存放民國年的字串(ex:1051228),我自己是習慣以date來存放,等到要呈現資料時,才會另外撈出來處理成民國年。

接下來會以讀取Excel的方式來示範,若使用CSV或是Table讀取資料,在Calculator的設定都是一模一樣的喔!

http://ithelp.ithome.com.tw/upload/images/20161229/20091626TSzd71qupk.png

新增 Calculator

一如往常,新找到Calculator並加入主要編輯區
http://ithelp.ithome.com.tw/upload/images/20161229/20091626YHxzvlfXYb.png

建立 Hop

此步驟不可省略,要建立Hop資料才會傳至Calculator
http://ithelp.ithome.com.tw/upload/images/20161229/20091626FP2E0hkXEt.png

設定 Calculator

在Calculator上面點兩下進行設定
http://ithelp.ithome.com.tw/upload/images/20161229/20091626ushUyDP1jo.png

  1. 在New Field命名要加入的欄位名稱,因為要針對日進行拆解,所以需要把年月日欄位各別獨立:西元年
  2. 在Calculation選擇要使用的計算規則:Year of date A,計算規則中的變數A、B、C會讀取Field A、Field B、Field C的值來做運算,另外在這裡也可以看到Calculation也提供了許多現成的公式,可是自身需求來進行套用
  3. 在Field A選取欄位:生日
  4. 設定此新增的欄位的型態:Integer

接著就繼續把月份跟日期的部分也都獨立出來,設定如下
http://ithelp.ithome.com.tw/upload/images/20161229/20091626JT64U8YYXn.png

完成設定之後,先來預覽一下計算結果,可以點選Preview icon或是在Calculator按右建選取Preview(不熟的人可以再參考:預覽、除錯與驗證Transformation篇)
http://ithelp.ithome.com.tw/upload/images/20161229/20091626EXB9TQkipE.png

http://ithelp.ithome.com.tw/upload/images/20161229/20091626uXvIZ0ZjKA.png

把日期獨立的部分已經都設定完成了,接下來我們要來進行西元年轉民國年的計算,但會發現,Field B不知道要選誰,應該要有一個欄位值代表民國初年的西元年,也就是1911年,這樣我們才有辦法使用Calculation=A-B的公式
http://ithelp.ithome.com.tw/upload/images/20161229/20091626aPFkfOxQe2.png

所以,接下來要來介紹一個也經常使用的Step:[Transform]Add constants

新增 Add constants

新找到Add constants並加入主要編輯區
http://ithelp.ithome.com.tw/upload/images/20161229/20091626d2FldIYN0G.png

建立 Hop

http://ithelp.ithome.com.tw/upload/images/20161229/20091626hCnukMFqKL.png

設定 Add constants

輸入常數名稱、型態與值
http://ithelp.ithome.com.tw/upload/images/20161229/20091626zscGCVrDkz.png

回到Add constants設定民國年的Field B,此時就會出現"民國初年的西元年"的欄位可以選擇了
http://ithelp.ithome.com.tw/upload/images/20161229/20091626pzYomh3TOO.png

一切完成之後,進行預覽,就成功取得民國年囉!
http://ithelp.ithome.com.tw/upload/images/20161229/200916264xHZqRP28O.png


下一篇將介紹如何組合日期,或者是大家可以動動腦想一下哦!用今天的Calculator就可以完成組合囉,答案明天揭曉


上一篇
Step - 讀取資料庫
下一篇
Step - 字串組合與欄位調整
系列文
30天學會Data Integration - Kettle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言