2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

用DataStage 進(jìn)行數(shù)據(jù)整合:第 2 部分

 dazheng 2007-11-14
在本文中,您將看到一個(gè)同時(shí)處理多個(gè)數(shù)據(jù)源和目標(biāo)的 ETL Job 的開(kāi)發(fā)過(guò)程,并了解 DataStage 中 Container 和 Job Sequence 的用法。

引言

系列的第一部分介紹了 DataStage 的基本功能。本文將從以下幾個(gè)方面深入介紹 IBM WebSphere DataStage 在數(shù)據(jù)整合方面的強(qiáng)大功能。

1. Job Sequence 的用法

2. DataStage Container 的用法

3. 開(kāi)發(fā)一個(gè)同時(shí)處理多個(gè)數(shù)據(jù)源和目標(biāo)的 ETL Job





回頁(yè)首


Job Sequence 的用法

在用 IBM WebSphere DataStage 進(jìn)行數(shù)據(jù)整合的過(guò)程中,我們一般會(huì)開(kāi)發(fā)很多個(gè)單獨(dú)的 ETL Job 去完成特定的邏輯功能,這些 ETL Job 之間的運(yùn)行順序往往是有限制的,那么我們?nèi)绾翁幚?ETL Job 之間的這種依賴(lài)關(guān)系呢?IBM WebSphere DataStage 提供了處理這種問(wèn)題的方法,那就是使用 Job Sequence。使用 Job Sequence 可以方便的處理 ETL Job 之間的依賴(lài)以及運(yùn)行順序問(wèn)題。下面我們通過(guò)開(kāi)發(fā)一個(gè)簡(jiǎn)單的 Job Sequence 來(lái)演示 Job Sequence 的用法。

開(kāi)發(fā)一個(gè) Job Sequence 和開(kāi)發(fā)一個(gè) ETL Job 的方法是類(lèi)似的,都是用 DataStage Designer 來(lái)開(kāi)發(fā)。我們將要開(kāi)發(fā)的這個(gè) Job Sequence 的功能是實(shí)現(xiàn)兩個(gè) ETL Job 的順序執(zhí)行,并且在第一個(gè) ETL Job 運(yùn)行成功的情況下第二個(gè) ETL Job 才開(kāi)始執(zhí)行。因此我們必須先準(zhǔn)備兩個(gè) ETL Job,這兩個(gè) ETL Job 的名字分別為 Job1 和 Job2。

開(kāi)發(fā)步驟

1. 打開(kāi) DataStage Designer。如下圖所示,從下拉列表中選擇 Job Sequence。這樣就會(huì)新建一個(gè) Job Sequence;


圖 1:新建 Job Sequence
圖 1:新建 job sequence

2. 新建的 Job Sequence 如下圖所示。這時(shí)候這個(gè) Job Sequence 還沒(méi)有被保存。單擊 DataStage Designer 的保存按鈕來(lái)保存 Job Sequence;


圖 2:新建的 Job Sequence
圖 2:新建的 job sequence

3. 彈出的保存對(duì)話(huà)框如下圖所示,在 Job name 一欄中填入 SampleJobSequence。在 Category 一欄中填入 sequence,單擊 OK 按鈕保存 Job Sequence;


圖 3:保存 Job Sequence
圖 3:保存 job sequence

4. 保存好 Job Sequence 后,從左側(cè)面板 Sequence 一欄中的下拉列表中添加兩個(gè) Job Activity 到右側(cè)的面板中,并把這兩個(gè) Job Activity 連接起來(lái);


圖 4:添加 Job Activity
圖 4:添加 job activity

5. 雙擊左邊的 Job Activity Stage,會(huì)彈出如下圖所示的屬性框。在 General 標(biāo)簽中,Name 一欄輸入 Job1,這是這個(gè) Job Activity Stage 的名字。然后單擊標(biāo)簽 Job;


圖 5:輸入 Job Activity 的名稱(chēng)
圖 5:輸入 job activity 的名稱(chēng)

6. 在標(biāo)簽 Job 中單擊右側(cè)的按鈕來(lái)選擇這個(gè) Job Activity 連接到哪個(gè) ETL Job 上面;


圖 6:選擇 ETL Job
圖 6:選擇 etl job

7. 在彈出的選擇 ETL Job 的對(duì)話(huà)框中選擇 Job1 并單擊按鈕 OK;


圖 7:選擇 Job1
圖 7:選擇 job1

8. 在標(biāo)簽 Trigger 中,在 Expression Type 下拉列表中選擇 OK-(Conditional)。這個(gè)選項(xiàng)的意思是只有在這個(gè) Job Activity Stage 連接的 ETL Job 成功執(zhí)行后,才能執(zhí)行后面的 ETL Job。單擊按鈕 OK 完成對(duì) Job Activity Stage Job1 的配置;


圖 8:完成 Job1 的配置
圖 8:完成 job1 的配置

9. 雙擊右邊的 Job Activity Stage,會(huì)彈出如下圖所示的屬性框。在 General 標(biāo)簽中,Name 一欄輸入 Job2,這是這個(gè) Job Activity Stage 的名字。然后單擊標(biāo)簽 Job;


圖 9:建立 Job2
圖 9:建立 job2

10. 在標(biāo)簽 Job 中,單擊右側(cè)按鈕,會(huì)彈出一個(gè)選擇 ETL Job 的對(duì)話(huà)框,在這個(gè)對(duì)話(huà)框中選擇 ETL Job Job2。然后單擊 OK 按鈕;


圖 10:選擇 Job2
圖 10:選擇 job2

11. 這時(shí)你會(huì)注意到 ETL Job Job2 已經(jīng)被添加進(jìn)來(lái)。單擊按鈕 OK 完成對(duì)這個(gè) Job Activity Stage 的配置;


圖 11:完成 Job2 的配置
圖 11:完成 job2 的配置

12. 配置完成后,單擊圖標(biāo)"編譯"來(lái)編譯該 Job Sequence;


圖12:編譯 Job Sequence
圖12:編譯 job sequence

13. 編譯成功后,彈出的對(duì)話(huà)框中會(huì)顯示如下圖所示的信息。單擊按鈕 Close;


圖 13:編譯成功
圖 13:編譯成功

14. 打開(kāi) DataStage Director,選中 SampleJobSequence,然后單擊"運(yùn)行"按鈕運(yùn)行它;


圖 14:運(yùn)行 SampleJobSequence
圖 14:運(yùn)行 samplejobsequence

15. 運(yùn)行完成后,這個(gè) Job Sequence 的狀態(tài)會(huì)變成 Finished。這說(shuō)明這個(gè) Job Sequence 中的兩個(gè) ETL Job Job1和Job2 都已經(jīng)成功執(zhí)行。如果這兩個(gè) ETL Job 中的任何一個(gè)執(zhí)行失敗的話(huà),那么這個(gè) Job Sequence 的狀態(tài)就會(huì)變成 Aborted。


圖 15:執(zhí)行完畢
圖 15:執(zhí)行完畢




回頁(yè)首


DataStage Container 的用法

DataStage 提供了兩種類(lèi)型的 Container:Local containers 和 Shared containers,下面將分別介紹這兩種類(lèi)型的 Container。

Local containers

1。主要用途

Local containers 主要是用來(lái)簡(jiǎn)化 ETL Job 的設(shè)計(jì)的,當(dāng)你的某個(gè) ETL Job 非常復(fù)雜的時(shí)候,這個(gè) ETL Job 可能會(huì)包含非常多的 DataStage 的組件。把這些組件同時(shí)在一個(gè)面板上顯示出來(lái)的話(huà)就會(huì)使整個(gè) ETL Job 的邏輯顯得非?;靵y,這時(shí)候你就可以用一個(gè)或者多個(gè) Locale container 把這個(gè) ETL Job 中具有特定功能的邏輯模塊(比如數(shù)據(jù)抽取模塊)封裝起來(lái)。這樣就會(huì)使這個(gè) ETL Job的流程非常清晰。

2。構(gòu)造方法

(1) 用 DataStage Designer 打開(kāi)一個(gè)創(chuàng)建好的 ETL Job。然后選擇你要封裝到 Local container 里面的組件。如下圖所示:


圖 16:選擇組件
圖 16:選擇組件

(2) 選擇 Edit‘Construct Container‘Local 把選擇的 DataStage 組件封裝成一個(gè) Local container。


圖 17:封裝組件
圖 17:封裝組件

(3) 構(gòu)建好 Local container 后,原來(lái)的 ETL Job 的布局變成如下圖所示,這樣整個(gè)布局看起來(lái)比之前要簡(jiǎn)化多了。你可以通過(guò)單擊下面的標(biāo)簽 ContainerC3 來(lái)查看這個(gè) Local container 里面的內(nèi)容。


圖 18:查看 container 的內(nèi)容
圖 18:查看 container 的內(nèi)容

Shared containers

1. 主要用途

Shared containers 除了具備 Local containers 的功能外,它還可以在不同的 ETL Job 之間實(shí)現(xiàn)共享。如果多個(gè) ETL Job 都需要實(shí)現(xiàn)某個(gè)邏輯功能,那么就可以把這個(gè)邏輯功能封裝成一個(gè) Shared container。

2. 構(gòu)造方法

構(gòu)造 Shared containers 的方法和構(gòu)造 Local containers 的方法幾乎相同,只是 Shared containers 是單獨(dú)保存起來(lái)的。具體構(gòu)造步驟如下:

(1) 打開(kāi)一個(gè) ETL Job。

(2) 選擇要封裝成 Shared containers 的組件。

(3) 選擇 Edit‘Construct Container‘Shared 把選擇的 DataStage 組件封裝成一個(gè) Shared container。

(4) 保存這個(gè)Shared container。

開(kāi)發(fā)一個(gè)同時(shí)處理多個(gè)數(shù)據(jù)源和目標(biāo)的 ETL Job

本文的余下部分將開(kāi)發(fā)一個(gè)同時(shí)處理多個(gè)數(shù)據(jù)源和目標(biāo)的 ETL Job,使大家對(duì)用 IBM WebSphere DataStage 處理多數(shù)據(jù)源問(wèn)題有個(gè)清楚的認(rèn)識(shí)。這個(gè) ETL Job 的功能是把 DB2 數(shù)據(jù)庫(kù) source 中的 employee 表和 laborcost 表先做 Join,然后再聚合,最后把聚合后的結(jié)果存放到兩個(gè) DB2 數(shù)據(jù)庫(kù) target1 和 target2 中的 departmentcost 表中去。

這個(gè) ETL Job 所用到的表的結(jié)構(gòu)如下:


表 1:employee 表
表 1:employee 表

表 2:laborcost 表
表 2:laborcost 表

表 3:departmentcost 表
表 3:departmentcost 表

開(kāi)發(fā)步驟:

1. 用 DataStage Designer 從數(shù)據(jù)庫(kù)中把上述的三張表結(jié)構(gòu)導(dǎo)入到 DataStage Designer 中(如何從數(shù)據(jù)庫(kù)中導(dǎo)入表結(jié)構(gòu)請(qǐng)參照本系列第一部分)。存放的路徑如下圖所示:


圖 19:存放路徑
圖 19:存放路徑

2. 用 DataStage Designer 新建一個(gè) Parallel ETL Job,這個(gè) ETL Job 的布局如下圖所示:這個(gè) ETL Job 中包含四個(gè) DB2/UDB API Stage,一個(gè) Join Stage,一個(gè) Aggregator Stage 和一個(gè) Copy Stage。DB2/UDB API Stage 負(fù)責(zé)連接數(shù)據(jù)表,Join Stage 負(fù)責(zé)兩個(gè)數(shù)據(jù)表之間的連接(根據(jù)一個(gè)或者多個(gè)字段),Aggregator Stage 負(fù)責(zé)對(duì)數(shù)據(jù)記錄進(jìn)行聚合(作用相當(dāng)于SQL中的聚合函數(shù)),Copy Stage 負(fù)責(zé)把數(shù)據(jù)分發(fā)到不同的目標(biāo)表中去;


圖 20:ETL Job 布局
圖 20:etl job 布局

3. 雙擊 DB2/UDB API Stage laborcost,會(huì)彈出如下圖所示的屬性框。在標(biāo)簽 Stage 的子標(biāo)簽 General 中。Server name(也就是要連接的 DB2 數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名)一欄輸入 source,然后輸入用于連接這個(gè)數(shù)據(jù)庫(kù)的用戶(hù)名和密碼。單擊標(biāo)簽 Output;


圖 21:Laborcost 的 stage 屬性
圖 21:laborcost 的 stage 屬性

4. 在 Output 標(biāo)簽的子標(biāo)簽 General 中,設(shè)置 Table names 為 laborcost,Query type 設(shè)置為 Generated SQL Query。然后單擊標(biāo)簽 Columns;


圖 22:Laborcost 的 Output 屬性
圖 22:laborcost 的 output 屬性

5. 在標(biāo)簽 Output 的子標(biāo)簽 Column 中,單擊按鈕 Load 導(dǎo)入表結(jié)構(gòu) laborcost 到 Columns 中,這個(gè)表結(jié)構(gòu)描述的是這個(gè) DB2/UDB API Stage 要連接的數(shù)據(jù)表 laborcost 的表定義。


圖 23:導(dǎo)入表結(jié)構(gòu)
圖 23:導(dǎo)入表結(jié)構(gòu)

6. 單擊按鈕 View Data 來(lái)查看表 laborcost 中的數(shù)據(jù),彈出的窗口入下圖所示,這個(gè)表中共有 4 條數(shù)據(jù),單擊按鈕 Close 關(guān)掉數(shù)據(jù)窗口;


圖 24:查看數(shù)據(jù)
圖 24:查看數(shù)據(jù)

7. 雙擊 DB2/UDB API Stage employee,會(huì)彈出如下圖所示的屬性框,在 Server name 一欄中輸入 source,然后單擊標(biāo)簽 Output;


圖 25:Employee 的 stage 屬性
圖 25:employee 的 stage 屬性

8. 在標(biāo)簽 Output 的子標(biāo)簽 General 中,Table names 設(shè)置為 employee,Query type 選擇 Generated SQL query,然后單擊標(biāo)簽 Columns;


圖 26:Employee 的 output 屬性
圖 26:employee 的 output 屬性

9. 在標(biāo)簽 Output 的子標(biāo)簽 Column 中,單擊按鈕 Load 導(dǎo)入表結(jié)構(gòu) employee 到 Columns 中,這個(gè)表結(jié)構(gòu)描述的是這個(gè) DB2/UDB API Stage 要連接的數(shù)據(jù)表 employee 的表定義。


圖 27:查看表定義
圖 27:查看表定義

10. 單擊按鈕 View Data 查看表 employee 中的數(shù)據(jù),彈出的數(shù)據(jù)窗口如下圖所示,employee 表格中共有三條數(shù)據(jù);


圖 28:查看表數(shù)據(jù)
圖 28:查看表數(shù)據(jù)

11. 雙擊 Join Stage,彈出的屬性窗口入下圖所示,在標(biāo)簽 Stage 的子標(biāo)簽 Properties 中,Join Keys 一欄中選擇 Key = employee,Options 一欄里面選擇 Join Type = Inner,然后單擊標(biāo)簽Output;


圖 29:Join Stage
圖 29:join stage

12. 在標(biāo)簽 Output 的子標(biāo)簽 Column 中,單擊按鈕 Load 導(dǎo)入表結(jié)構(gòu) departmentcost 到 Columns 中,然后單擊 OK 完成對(duì) Join Stage 的屬性設(shè)置;


圖 30:導(dǎo)入表結(jié)構(gòu)
圖 30:導(dǎo)入表結(jié)構(gòu)

13. 雙擊 Aggregator Stage,會(huì)彈出如下圖所示的屬性窗口,在標(biāo)簽 Stage 的子標(biāo)簽 Properties 中,Grouping Keys 一欄設(shè)置為 Group = departmentid,Aggregation 一欄設(shè)置為 Aggregation Type = Caculation,Column for Caculation = laborcost,Sum Out Column = laborcost,然后單擊 OK 按鈕完成對(duì) Aggregator Stage 的屬性設(shè)置;


圖 31:完成 Aggregator Stage 的設(shè)置
圖 31:完成 aggregator stage 的設(shè)置

14. 雙擊 DB2/UDB API Stage LaborcostByDepartment1,會(huì)彈出如下圖所示的屬性框,在 Stage 標(biāo)簽的 General 子標(biāo)簽中,Server name 設(shè)置為 target1,然后輸入用于連接這個(gè)數(shù)據(jù)庫(kù)的用戶(hù)名和密碼,單擊 Input 標(biāo)簽;


圖 32:LaborcostByDepartment1 屬性
圖 32:laborcostbydepartment1 屬性

15. 在 Input 標(biāo)簽的 General 子標(biāo)簽中,Table name 設(shè)置為 departmentcost,Update action 選擇 Clear the table,then insert rows,Create table action 選擇 Do not create target table。然后單擊 Columns 子標(biāo)簽;


圖 33:輸入設(shè)置
圖 33:輸入設(shè)置

16. 在標(biāo)簽 Input 的 Columns 子標(biāo)簽中,單擊 Load 按鈕導(dǎo)入表結(jié)構(gòu) departmentcost 到 Columns 中,然后單擊按鈕 OK 完成對(duì) DB2/UDB API Stage LaborcostByDepartment1 屬性設(shè)置;


圖 34:導(dǎo)入表結(jié)構(gòu)
圖 34:導(dǎo)入表結(jié)構(gòu)

17. 以和設(shè)置 DB2/UDB API Stage LaborcostByDepartment1 同樣的方式設(shè)置 DB2/UDB API Stage LaborcostByDepartment2,唯一的不同是 Server name 設(shè)置為 target2,其他的屬性均設(shè)置為相同的;

18. 所有的組件的屬性現(xiàn)在都已經(jīng)設(shè)置完畢,現(xiàn)在單擊圖標(biāo)"編譯"對(duì)剛開(kāi)發(fā)好的 ETL Job 進(jìn)行編譯;


圖 35:編譯 ETL Job
圖 35:編譯 etl job

19. 編譯成功后,單擊圖標(biāo)"運(yùn)行"來(lái)運(yùn)行 ETL Job;


圖 36:運(yùn)行 ETL Job
圖 36:運(yùn)行 etl job

20. 等到組件之間的連線(xiàn)變成了綠色,說(shuō)明 ETL Job 已經(jīng)成功執(zhí)行,而且會(huì)顯示一些統(tǒng)計(jì)信息在上面,比如每秒鐘處理了多少條數(shù)據(jù)等;


圖 37:運(yùn)行結(jié)果
圖 37:運(yùn)行結(jié)果

21. 使用 DataStage Designer 的 View Data 功能查看目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù),如下圖所示,目標(biāo)數(shù)據(jù)庫(kù)中的 departmentcost 表中有兩條經(jīng)過(guò)聚合后的記錄,這也驗(yàn)證了我們開(kāi)發(fā)的 ETL Job 的邏輯是正確的。


圖 38:查看目標(biāo)數(shù)據(jù)庫(kù)
圖 38:查看目標(biāo)數(shù)據(jù)庫(kù)




回頁(yè)首


總結(jié)

本文首先介紹了 IBM WebSphere DataStage 中 Job Sequence 和 Container 的用法,然后用一個(gè) ETL Job 演示了 IBM WebSphere DataStage 處理多數(shù)據(jù)源方面的優(yōu)勢(shì)。使讀者對(duì) IBM WebSphere DataStage 有了更進(jìn)一步的了解。



關(guān)于作者

 

周登朋,上海交通大學(xué)研究生,熟悉DB2, IBM WebSphere DataStage. 對(duì)數(shù)據(jù)整合以及Java技術(shù)非常感興趣。 Email:zhoudengpeng@yahoo.com.cn

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多