發表文章

目前顯示的是 2017的文章

30天學會Data Integration - Kettle系列 第 30 篇 - 閉幕 - 總結

  30天的Kettle文章,就到此告一段落囉!透過基本觀念介紹、實例操作示範與簡易的拖拉設定,輕鬆的完成資料分析、轉置與整合,這份檔案就像一份腳本,人人都看得懂,人人可維護,並且搭配上執行通知與排程設定,讓我們更能掌控資料整合的情況與進度。30篇文章中,最著重在Transformation的設計,Steps的部分大概介紹了20種,以下,我們來回顧一下學了哪些。 Kettle安裝與操作環境介紹 Transformation與Job的基本觀念與操作 Hops設定 Transformation Steps操作實例 [Input]CSV file input [Input]Microsoft Excel Input [Input]Table input [Input]Get System Info [Output]Insert / Update [Output]Microsoft Excel Output [Transform]Add constants [Transform]Calculator [Transform]Add constants [Transform]Select values [Transform]Sort rows [Utility]Mail [Flow]Filter rows [Flow]Dummy [Scripting]Modified Java Script Value [Lookup]Database join [Lookup]Database lookup [Joins]Merge Join [Job]Get Variables [Job]Set Variables Job Entries操作實例 [General]START [General]Transformation [Mail]Mail Transformation與Job的排程設定 其實還有很多好用的Steps與Entries想介紹給大家,但礙於表達能力與還有每天可利用的時間很有限,不僅要說明功能還要想例子來實做,想盡量說得仔細一點,希望可以讓大家了解Kettle並循序漸進地學習,有了基本觀念之後可以更容易的去做自我的延伸學習,但現實總是殘酷的!感覺透過這30天的比賽,深深覺得自己各方面都還要在加強,謝謝大家這30天的陪伴(哪來的大家啊XD?),寫得不好的地方還請多多包涵...

30天學會Data Integration - Kettle系列 第 29 篇 - 設定排程

圖片
  本篇要介紹如何將設計好的Transformation與Job設定到電腦的系統排程,去做一些例行性的資料處理,例如寄出行事歷系統中每日的活動事項給使用者,類似這種功能很多人都是另外寫程式去處理,但透過Kettle只需要幾個Step就可以簡單且清楚的完成。 在Kettle中我們查看結果都是使用Run icon來執行,但不可能每天都準時打開Kettle然後按下Run按鈕吧!所以需要透過一些自動化的設定。 新增一個.bat檔案 如果要執行Job,內容請打以下指令碼,然後指定自己job檔案的位子 d: cd /d "D:\data-integration\" call kitchen.bat / file :D:\ data -integration\samples\jobs\arguments2\pass_arguments.kjb - logfile =D:\ data -integration\samples\jobs\log.txt exit -logfile可自行選用,會紀錄執行的Log資訊 如果要執行Job,內容請打以下指令碼,然後指定自己Transformation檔案的位子 d: cd /d "D:\data-integration\" call kitchen.bat / file :D:\data-integration\samples\jobs\arguments2\pass_arguments.kjb exit 設定系統排程 開始>所有程式>附屬應用程式>系統工具>工作排程器 建立基本工作 選擇.bat檔案 完成排程設定 執行時間到的時候會開啟執行視窗,完成後會自動關閉視窗 透過上述的排程設定是不是覺得很方便呢,可以想看看手邊有沒有什麼例行性處理的事情,然後使用Kettle重新設計後就可以完全自動化處理囉! 參考資料: http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation

30天學會Data Integration - Kettle系列 第 28 篇 - 設定變數與取得變數

圖片
  此篇要來討論一些進階問題,先前我們介紹過使用Get System Info來讀取系統資訊,例如取得日期或是Command Line傳入的參數,而也曾介紹過Step的特性就是在處理資料流中的每一筆資料,那麼在一筆一筆資料慢慢處理時,會不會有效能上的問題呢?答案是肯定的,所以本篇會介紹調整效能的好物,就是[Job]Set Variables與[Job]Get Variables,且必須與Job還有Transformation互相搭配使用 本篇目標 使用 Step - 取得系統資訊並寫入資料庫 此篇延伸說明,本篇想要取得近七日的新增的貨運商資料。 本篇撰寫時的前七日是2017/1/5,所以1/5後新增的有6筆,1/5前新增的有3筆 以下先介紹如果只用Transformation來處理會有什麼問題,以及如何搭配Job來做問題的改善 使用Transformation設計 1.新增Table Input將Shippers資料表讀進來 2.新增Select Values將CreateTime欄位型態從String轉為Date,以便後續篩選日期時才能做日期比較 3.新增Get System Info取得今日日期 4.新增Add constants來定義要取得幾天前的日期,因為本篇想要取得七前天,所以將值設為-7 5.新增Calculator進行本日日期減掉七天的運算 6.新增Filter rows,篩選出近七日新增的廠商資料 7.新增Microsoft Excel Output來接收近七日新增資料 8.新增Dummy來接收篩選的來接收七日前新增資料 細部設定 完成後直接執行,觀察Step Metrics會發現,「取得今天日期」、「設定天數」與「取得前七天的日期」的Read與Written的次數都是9次,也意味著,如果今天資料有100萬筆,這3個Step就會執行100萬次,但是!這三個Step的結果都是固定的!不會隨著一筆一筆的資料的不同而有所改變,所以這很顯然有浪費效能的問題,此設計可能需要在進行調整 使用Job設計 將固定的運算獨立成一個Transformation 固定的運算指的就是「取得今天日期」、「設定天數」與「取得前七天的日期」這三個Step,新增一個Transformation,並將此3個Step加入,另外在新增一個Step:[Job]Set Variabl...

30天學會Data Integration - Kettle系列 第 27 篇 - Entry - Email通知

圖片
  Job的Entry除了先前介紹過的START與Transformation,本篇要繼續的Entry是[Mail]Mail 本篇目標 直接以第22篇的ktr檔來做示範, Step - 取得系統資訊並寫入資料庫 ,當新增與更新資料作業皆完成時寄Email通知自己 新增Job 新增START與Transformation 請建立Hop 設定Transformation 選取第22篇中設計好的Transformation檔案 執行 Job 確認並查看是不是有如期完成任務 加入Mail 新增Mail並建立Hop 設定Mail 這邊的設定是直接輸入值,與上一篇Step的Mail方式設定不同 執行 Job 會收到一封通知信,內容還含有執行的相關訊息 看完這兩篇有沒有對於Job與Transformation又更認識了一點呢,Transformation是針對資料的處理,而Job則是針對整體流程做處理,角色是完全不同的喔!

30天學會Data Integration - Kettle系列 第 26 篇 - Step - Email通知

圖片
  此篇要來介紹Email通知的功能,通常資料轉置是很龐大的,一跑可能就好幾個小時,我們當然也不會傻傻的在那邊等先跑去打混摸魚一下再說XD,所以最希望有自動通知的功能,來告訴我們是否執行完成,結果是成功還是失敗。此篇與下一篇也會藉由Mail稍為介紹一下Entry與Step的不同,因為Mail剛剛好是Entry與Step都有的一種元件。 本篇目標 直接以第22篇的ktr檔來做示範, Step - 取得系統資訊並寫入資料庫 ,每當成功新增一筆資料就寄Email通知自己 新增Step - [Utility]Mail 加入一個Mail Step 下圖可以看到我們可以定義信要寄給誰,以及定義寄件人的資訊 設定Mail Server資訊,能不能發信成功跟這邊有莫大的關係 其它的頁籤可以在另外去做一些信件內容與附件檔案的設定,由於Mail裡面需要使用到許多參數,例如smtp server等資訊,所以要另外新增一個Add constants來定義這些參數,才能提供給Mail Step使用 新增Add constants 加入一個Add constants 加入常數,定義發信要用的參數,這邊我是使用gmail來發信 設定Mail 將Add constants中定義的常數一一設定到欄位中 執行Transformation 收到3筆新增通知囉 以上我們更能觀察中,Step的執行方式是一筆筆的資料來進行處理,所以3筆新增資料就會收到3封Email,如果你今天要轉10萬筆資料,就會收到10萬筆Email,那...應該會傻眼吧XD,所以!如果你只想知道結果而不是過程的話,那就可以改使用Job來進行Email通知,下一篇我們要來介紹如何在Job中使用Email。

30天學會Data Integration - Kettle系列 第 25 篇 - Job動態傳遞參數

圖片
  延續上一篇,此篇將介紹如何動態傳遞參數給Job使用,介紹兩種方式: 1.透過Kettle GUI傳遞參數 2.透過Command Line傳遞參數 1.透過Kettle GUI傳遞參數 開啟範例檔案 開啟 \data-integration\samples\jobs\arguments\Set arguments on a transformation.kjb 從上一篇得知此Job的Transformation Entry是執行Run transformation.ktr檔案,其中有使用到Get System Info Step來得取三個參數,名稱分別為One、Two與Three 執行Job 在Run Options畫面,按下Arguments(legacy)按鈕 會出現01、02與03三個參數,分別對應One、Two與Three,Value的部份我們可以自行輸入任意值,完成後按下OK按鈕,再按下Run按鈕 查看Excel 開啟 \data-integration\samples\transformations\output\arguments-test.xls,在這邊會發現,Excel寫入的值跟我們傳入的參數值不同 請清空Run transformation.ktr Entry的Argument頁籤中的預設參數,如果你今天是想使用靜態參數就可以在這邊設定,但此篇是要以動態的方式給值,所以請按Delete鍵進行預設參數的刪除 再重新執行一次,成功接收參數並寫入Excel檔案囉! 2.透過Command Line傳遞參數 開啟命令提示字元 切換到解壓縮kettle的目錄下,輸入以下指令 kitchen.bat / file :<directory>\<job or transformation name > arg1 arg2 arg3 D: \data-integration>kitchen.bat /file:D: \data-integration\samples\jobs\arguments \Set arguments on a transformation.kjb 111 222 333 執行錯誤,檔案名稱不能有空白 請複製job並更名,以下是將空白改為底線: Set arguments on a ...