datastage教程

轉自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0602zhoudp/

 

      傳統的數據整合方式需要大量的手工編碼,而採用 IBM WebSphere DataStage 進行數據整合可以大大的減少手工編碼的數量,而且更加容易維護。數據整合的核心內容是從數據源中抽取數據,然後對這些數據進行轉化,最終加載的目標數據庫或者數據倉庫中去,這也就是我們通常所說的ETL過程。IBM WebSphere DataStage 爲整個 ETL 過程提供了一個圖形化的開發環境。本文將從以下幾個方面來介紹 IBM WebSphere DataStage:

1. 出色的據源連接能力

2. 完備的開發環境

3. ETL Job 的並行執行能力

4. 開發一個簡單的 ETL Job

 


 

1、出色的數據源連接能力

      數據整合工具的數據源連接能力是非常重要的,這將直接決定它能夠應用的範圍。IBM WebSphere DataStage 能夠直接連接非常多的數據源,包括:

1、 文本文件

2、 XML 文件

3、 企業應用程序,比如 SAP、Siebel、Oracle 以及PeopleSoft

4、 幾乎所有的數據庫系統,比如 DB2、Oracle、SQL Server、Informix等

5、 Web services

6、 WebSphere MQ

正是因爲這麼好的連接能力,IBM WebSphere DataStage 使用戶能夠專注於數據轉換的邏輯而不用太擔心數據的抽取和加載。

 


 

2、完備的開發環境

     IBM WebSphere DataStage 的開發環境是基於 C/S 模式的,通過 DataStage Client 連接到DataStage Server 上進行開發。這裏有一點需要注意,DataStage Client 只能安裝在 Windows 平臺上面。而 DataStage Server 則支持多種平臺,比如 Windows、Redhat Linux、AIX、HP-UNIX。

      DataStage Client 有四種客戶端工具。分別是 DataStage Administrator、DataStage Designer、DataStage Manager、DataStage Director。接下來首先介紹這幾種客戶端工具在 DataStage 架構中所處的位置以及它們如何協同工作來開發 ETL Job 的,接着再分別詳細介紹每個工具的功能。

      圖 1 描述了 IBM WebSphere DataStage 的整個系統架構。DataStage 的客戶端工具連接到DataStage Server 上進行 ETL Job 的開發,DataStage Server 再與後臺的數據庫連接起來進行數據處理。DataStage 的客戶端工具之間的是一個相互合作的關係。下面通過介紹 ETL Job的開發過程來介紹他們之間的這種關係。

 

ETL Job開發流程

1. 用 DataStage Administrator 新建一個項目;

2. 用 DataStage Designer 連接到這個新建的項目上進行ETL Job的設計;

3. 用 DataStage Director 對設計好的ETL Job設置運行的模式,比如多長時間運行一次ETL Job;

4.用 DataStage Manager 進行ETL Job的備份等。

 

圖 1:IBM WebSphere DataStage 架構圖
圖 1:IBM WebSphere DataStage 架構圖

 

DataStage Administrator

DataStage Administrator 的主要功能有以下幾個:

1. 設置客戶端和服務器連接的最大時間。

      以管理員的身份登陸 DataStage Administrator。你就會看到如下圖所示的畫面。在這裏你可以設置客戶端和服務器的最大連接時間,默認的最大連接時間是永不過期。最大連接時間的意思就是如果客戶端和服務器的連接時間超過了最大連接時間,那麼客戶端和服務器之間的連接將被強行斷開。


2. 添加和刪除項目

       在 Projects 這個標籤中,可以新建或者刪除項目,以及設置已有項目的屬性。這裏有必要介紹一下項目的概念,要用 DataStage 進行 ETL 的開發,首先就要用 DataStage Administrator 新建一個項目,然後在這個項目裏面進行 ETL Job 的開發。


3. License的管理

可以在Licensing標籤中更新License。


 

DataStage Designer

     DataStage Designer是ETL Job開發的核心環境。值得注意的是,登陸DataStage Designer 的時候,不僅要指定DataStage Server 的IP,而且要指定連接到這個DataStage Server上的哪個項目上面,上面已經提到DataStage的項目是由DataStage Administrator 來創建的。DataStage Designer的主要功能可以概括爲以下三個方面:

1. ETL Job的開發

      DataStage Designer裏面包含了DataStage爲ETL開發已經構建好的組件, 主要分爲兩種,一種是用來連接數據源的組件,另一種是用來做數據轉換的組件。利用這些組件,開發人員可以通過圖形化的方式進行ETL Job的開發。

2. ETL Job的編譯

      開發好ETL Job後,可以直接在DataStage Designer裏面進行編譯。如果編譯不通過,編譯器會幫助開發人員定位到出錯的地方。

3. ETL Job的執行

      編譯成功後,ETL Job就可以執行了,在DataStage Designer裏面可以運行ETL Job。ETL Job的運行情況可以在DataStage Director中看到,這方面的內容將在介紹DataStage Director的時候提到。

 

DataStage Manager

      DataStage Manager主要用來管理項目資源。一個項目可能包含多個ETL Job,可以用DataStage Manager把一個項目裏面的ETL Job導出來。然後再用DataStage Manager導入到另外一個項目中去,利用這個功能一方面可以實現ETL Job的備份,另一方面就是可以在多個項目之間來重複使用開發好的ETL Job。在DataStage Manager裏面可以把數據庫中的表結構直接導入到項目中來,供這個項目中的所有ETL Job使用。DataStage Designer也提供了從數據庫中直接導入表結構的功能。

 

DataStage Director

DataStage Director 主要有以下兩個功能:

1. 監測ETL Job的運行狀態

     ETL Job在DataStage Designer中編譯好後,可以通過DataStage Director來運行它。前面在介紹DataStage Designer的時候提到在DataStage Designer中也可以運行ETL Job,但是如果要監測ETL Job的運行情況還是要登陸到DataStage Director中。在這裏,你可以看到ETL Job運行的詳細的日誌文件,還可以查看一些統計數據,比如ETL Job每秒所處理的數據量。

2. 設置何時運行ETL Job

     ETL Job開發完成後,我們可能希望ETL Job在每天的某個時間都運行一次。DataStage Director爲這種需求提供瞭解決方案。在DataStage Director中可以設置在每天、每週或者每月的某個時間運行ETL Job。

 


 

3、ETL Job的並行執行

      ETL Job的並行執行是IBM WebSphere DataStage企業版的一大特色。ETL Job開發好以後,可以在多臺裝有DataStage Server的機器上並行執行,這也是傳統的手工編碼方式難以做到的。這樣,DataStage就可以充分利用硬件資源。而且,當你的硬件資源升級的時候也不用修改已經開發好的ETL Job,只需要修改一個描述硬件資源的文件即可。並行執行能力是DataStage所能處理數據的速度可以得到趨近於線性的擴展,輕鬆處理大量數據


 

4、開發一個簡單的ETL Job

     我們將要開發一個非常簡單的ETL Job,使大家對用DataStage進行ETL開發有一個總體的認識。將要開發的ETL Job是把DB2數據庫Source中的表employee的內容導入到另外一個DB2數據庫Target中的表employee中去。其中兩個數據庫中的employee表的結構是相同的。employee表的結構爲:


     這裏需要說明的是,DB2數據庫的Client端必須和DataStage Server裝在同一臺機器上面。如果要連接的DB2數據庫的Server和DataStage Server不在同一臺機器上面,那麼就需要先用和DataStage Server裝在同一臺機器上的DB2的Client端提供的工具"配置助手"把要連接的數據庫添加到DB2的Client端當中。這就爲 DataStage連接該數據庫做好了準備。另外一點需要注意的是,如果你的DataStage Server是安裝在Windows上的,那麼做完上面所描述的事情後就可以用DataStage連接DB2數據庫了,但是如果你的DataStage Server是安裝在Linux或者Unix上面的,你還需要配置DataStage的一個名字叫dsenv文件。因爲我們的例子當中DataStage Server是運行在Linux上面的。我們將以Linux爲例講述dsenv文件的配置方法。

 

1. 配置dsenv文件(Linux環境)

     dsenv文件是主要是用來存放環境變量的,這些環境變量包含了DataStage要用到的類庫,以及要連接的數據庫的安裝的路徑等。dsenv文件位於位於文件夾 $DataStage/DSEngine裏面,$DataStage/是DataStage的安裝目錄,例如:/home/dsadm /Ascential/DataStage/。

打開dsenv文件,在文件的最後加上如下內容:

 

DB2DIR=/opt/IBM/DB2/V8.1;export DB2DIR
DB2INSTANCE=db2inst1; export DB2INSTANCE
INSTHOME=/home/db2inst1;export INSTHOME
PATH=$PATH:$INSTHOME/sqllib/bin:$INSTHOME/sqllib/adm:$INSTHOME/sqllib/misc
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INSTHOME/sqllib/lib;export LD_LIBRARY_PATH
THREADS_FLAG=native;export THREADS_FLAG

 

      這些環境變量用來描述DB2的安裝路徑、DB2的實例、以及DB2類庫的路徑。配置好這些環境變量後,我們就可以用DataStage連接DB2了。下面我們正式進入開發環節。

 

2. 新建項目

(1)用DataStage Administrator登錄到DataStage Server。Host system是安裝DataStage Server的主機,輸入它的IP地址或者主機名。另外再輸入用戶名和密碼後,單擊按鈕"OK";


(2)登錄後,在標籤Projects中可以看到目前這個DataStage Server上面所有的項目。單擊按鈕"Add"新建一個項目;


(3)在彈出的對話框中輸入項目名SampleProject,項目存儲的默認路徑是DataStage安裝路徑的Projects目錄下面,你可以通過單擊按鈕"Browse"來改變默認路徑。注意不要鉤上選擇框"Create protected project",因爲如果鉤上的話你所創建的工程將沒辦法被改變。單擊按鈕"OK";


(4)你會看到在項目列表裏面已經有了我們剛創建好的項目SampleProject,單擊按鈕"Close"關閉DataStage Administrator;


(5)用DataStage Designer登陸到DataSatge Server,輸入DataStage Server的IP或主機名以及用戶名和密碼,並指定Project爲我們剛纔創建的項目SampleProject。單擊按鈕"OK";


(6)在DataStage Designer當中單擊File'New去創建一個新的ETL Job;


(7)選擇"Parallel Job",單擊按鈕"OK";


(8) 一個新的ETL Job已經創建了,單擊工具欄上的圖標"保存",或者用快捷鍵"Ctrl+S"來保存,這時候一個保存ETL Job的對話框會彈出來;


(9)在彈出的對話框中。在Job name一欄輸入"SampleJob",在Category中輸入"Sample"。單擊按鈕"OK";


(10) 保存好剛創建的ETL Job後,我們用DataStage Designer來導入數據庫的表結構。在DataStage Designer的左下方的Repository中右鍵單擊"Table Definition"。然後選擇 Import'Pug-in Meta Data Definitions…;


(11)在彈出的對話框中選擇DSDB2,單擊按鈕OK;


(12) 在彈出的對話框中,Server Name選擇Source。輸入用戶名和密碼,再鉤上Tables選擇框之後單擊按鈕Next;


(13)選擇表employee,把要保存到的目錄改成PlugIn/Source。然後單擊按鈕 Import.;


(14)重複步驟 10-13把存儲在Target數據庫中的表employee的表結構導入進來,這次存放的路徑改成PlugIn/Target。完成後,你會在Repository中看到你導入的表結構;


(15)從左邊的palette中拖入兩個DB2/UDB API Stage到右邊的面板上。DB2/UDB2 API Stage是用來連接DB2數據庫的,我們這兩個DB2/UDB API Stage一個用來連接數據庫source,另一個用來連接數據庫Target;


(16)右鍵單擊左邊的DB2/UDB API Stage不要放開,一直拖拽鼠標到右邊的DB2/UDB2 API Stage上面。這時候在這兩個Stage之間會出現一條連線,代表了數據的流向。下面我們將配置這兩個Stage的屬性;


(17)左鍵雙擊左邊的DB2/UDB API Stage,會彈出如下圖所示的屬性框。在標籤Stage的子標籤General中,設置Stage name爲Source,Server name爲Source,User ID和 Password設置爲右權限訪問這個數據庫的用戶名和密碼。Transaction Isolation的默認的選項是Cursor Stability,保持默認選項然後單擊標籤Output;


(18)在標籤Output的子標籤General中,輸入Table names爲employee,並在Query type下拉框中選擇Generated SQL Query。這樣DataStage會自動幫你生成大部分的SQL代碼。然後單擊子標籤Columns;


(19)在Columns子標籤中單擊按鈕Load去導入剛纔從數據庫中導進來的表結構;


(20)在彈出的對話框中選擇目錄PlugIn/Source中的表結構employee,然後單擊按鈕OK;


(21) 在彈出的對話框中選擇要導入的表的列,默認是全選,保持默認並單擊按鈕OK;


(22) 這時候你會看到表的字段已經被導入進來。單擊子標籤SQL;


(23) 在子標籤SQL中,你會看到系統自動生成的SQL語句。單擊按鈕 View Data查看錶employee中的數據;


(24)當前employee表中有兩條數據。單擊按鈕Close關掉數據查看窗口;


(25)現在我們開始編輯用來連接目標數據庫的DB2/UDB API Stage的屬性。雙擊這個Stage,彈出的屬性設置窗口如下圖所示。在標籤Stage的子標籤General中,Stage name設置爲Target,Server name設置爲Target,User ID和Password分別設置爲有權限對Target數據庫進行操作的用戶名和密碼。其他屬性保持默認值,然後單擊標籤Input;


(26)在標籤Input的子標籤General中,設置Table name爲employee,Update action選擇 Insert rows without cleaning。Create table action選擇Do not create target table。然後單擊子標籤Columns;


(27)在子標籤Columns中,你會發現已經有表結構load進來了,這個表結構是和source數據庫中的employee表的結構一致的。單擊按鈕OK並保存ETL Job;


(28)在工具欄中單擊圖標"編譯"對剛開發完的ETL Job進行編譯;


(29)編譯過程中會彈出一個對話框顯示編譯的進行情況。最終ETL Job編譯成功後對話框中會顯示如下圖中所示的消息:"Job successfully compiled with no errors";


(30)編譯成功後,我們打開DataStage Director來運行我們開發的ETL Job。從DataStage Designer中打開DataStage Director的方法爲:從菜單欄中選擇Tools'Run Director;


(31)打開DataStage Director後你會在Sample目錄下面發現我們開發好的ETL Job SampleJob,狀態爲Compiled。選擇SampleJob,然後單擊工具欄中的"運行"按鈕;


(32)在彈出的對話框中可以設置運行的參數,比如出現多少個warning後ETL Job會自動中止掉。我們保持這個對話框中的默認設置,單擊按鈕Run;


(33) 這時候你會注意到SampleJob的狀態從Compiled變成了Running,等到SampleJob的狀態變成Finished後,該ETL Job的運行就結束了;


(34)如下圖所示,SampleJob的狀態變成了Finished。SampleJob成功結束運行;


(35)到DataStage Designer中,用View Data功能查看目標數據庫Target中employee表中的數據。你會發現和源數據庫source中的employee表中的數據是一樣的。也說明我們開發的ETL Job成功的完成了我們想要它完成的任務。



 

總結

      本文首先介紹IBM WebSphere DataStage在數據源連接能力以及並行執行能力兩方面的特性,接着介紹了它的開發環境。最後用一個簡單的ETL Job演示了用IBM WebSphere DataStage進行ETL開發的過程,使大家對這個過程有了一個比較清楚的瞭解。IBM WebSphere DataStage提供的圖形化的環境使我們更容易進行開發和維護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章