用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx

上传人:b****8 文档编号:10044158 上传时间:2023-02-08 格式:DOCX 页数:35 大小:794.90KB
下载 相关 举报
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx_第1页
第1页 / 共35页
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx_第2页
第2页 / 共35页
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx_第3页
第3页 / 共35页
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx_第4页
第4页 / 共35页
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx

《用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx》由会员分享,可在线阅读,更多相关《用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx(35页珍藏版)》请在冰豆网上搜索。

用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx

用+IBM+WebSphere+DataStage+进行数据整合第+2+部分

在本文中,您将看到一个同时处理多个数据源和目标的ETLJob的开发过程,并了解DataStage中Container和JobSequence的用法。

引言

系列的第一部分介绍了DataStage的基本功能。

本文将从以下几个方面深入介绍IBMWebSphereDataStage在数据整合方面的强大功能。

1.JobSequence的用法

2.DataStageContainer的用法

3.开发一个同时处理多个数据源和目标的ETLJob

 

JobSequence的用法

在用IBMWebSphereDataStage进行数据整合的过程中,我们一般会开发很多个单独的ETLJob去完成特定的逻辑功能,这些ETLJob之间的运行顺序往往是有限制的,那么我们如何处理ETLJob之间的这种依赖关系呢?

IBMWebSphereDataStage提供了处理这种问题的方法,那就是使用JobSequence。

使用JobSequence可以方便的处理ETLJob之间的依赖以及运行顺序问题。

下面我们通过开发一个简单的JobSequence来演示JobSequence的用法。

开发一个JobSequence和开发一个ETLJob的方法是类似的,都是用DataStageDesigner来开发。

我们将要开发的这个JobSequence的功能是实现两个ETLJob的顺序执行,并且在第一个ETLJob运行成功的情况下第二个ETLJob才开始执行。

因此我们必须先准备两个ETLJob,这两个ETLJob的名字分别为Job1和Job2。

开发步骤

1.打开DataStageDesigner。

如下图所示,从下拉列表中选择JobSequence。

这样就会新建一个JobSequence;

图1:

新建JobSequence

2.新建的JobSequence如下图所示。

这时候这个JobSequence还没有被保存。

单击DataStageDesigner的保存按钮来保存JobSequence;

图2:

新建的JobSequence

3.弹出的保存对话框如下图所示,在Jobname一栏中填入SampleJobSequence。

在Category一栏中填入sequence,单击OK按钮保存JobSequence;

图3:

保存JobSequence

4.保存好JobSequence后,从左侧面板Sequence一栏中的下拉列表中添加两个JobActivity到右侧的面板中,并把这两个JobActivity连接起来;

图4:

添加JobActivity

5.双击左边的JobActivityStage,会弹出如下图所示的属性框。

在General标签中,Name一栏输入Job1,这是这个JobActivityStage的名字。

然后单击标签Job;

图5:

输入JobActivity的名称

6.在标签Job中单击右侧的按钮来选择这个JobActivity连接到哪个ETLJob上面;

图6:

选择ETLJob

7.在弹出的选择ETLJob的对话框中选择Job1并单击按钮OK;

图7:

选择Job1

8.在标签Trigger中,在ExpressionType下拉列表中选择OK-(Conditional)。

这个选项的意思是只有在这个JobActivityStage连接的ETLJob成功执行后,才能执行后面的ETLJob。

单击按钮OK完成对JobActivityStageJob1的配置;

图8:

完成Job1的配置

9.双击右边的JobActivityStage,会弹出如下图所示的属性框。

在General标签中,Name一栏输入Job2,这是这个JobActivityStage的名字。

然后单击标签Job;

图9:

建立Job2

10.在标签Job中,单击右侧按钮,会弹出一个选择ETLJob的对话框,在这个对话框中选择ETLJobJob2。

然后单击OK按钮;

图10:

选择Job2

11.这时你会注意到ETLJobJob2已经被添加进来。

单击按钮OK完成对这个JobActivityStage的配置;

图11:

完成Job2的配置

12.配置完成后,单击图标"编译"来编译该JobSequence;

图12:

编译JobSequence

13.编译成功后,弹出的对话框中会显示如下图所示的信息。

单击按钮Close;

图13:

编译成功

14.打开DataStageDirector,选中SampleJobSequence,然后单击"运行"按钮运行它;

图14:

运行SampleJobSequence

15.运行完成后,这个JobSequence的状态会变成Finished。

这说明这个JobSequence中的两个ETLJobJob1和Job2都已经成功执行。

如果这两个ETLJob中的任何一个执行失败的话,那么这个JobSequence的状态就会变成Aborted。

图15:

执行完毕

DataStageContainer的用法

DataStage提供了两种类型的Container:

Localcontainers和Sharedcontainers,下面将分别介绍这两种类型的Container。

Localcontainers

1。

主要用途

Localcontainers主要是用来简化ETLJob的设计的,当你的某个ETLJob非常复杂的时候,这个ETLJob可能会包含非常多的DataStage的组件。

把这些组件同时在一个面板上显示出来的话就会使整个ETLJob的逻辑显得非常混乱,这时候你就可以用一个或者多个Localecontainer把这个ETLJob中具有特定功能的逻辑模块(比如数据抽取模块)封装起来。

这样就会使这个ETLJob的流程非常清晰。

2。

构造方法

(1)用DataStageDesigner打开一个创建好的ETLJob。

然后选择你要封装到Localcontainer里面的组件。

如下图所示:

图16:

选择组件

(2)选择Edit'ConstructContainer'Local把选择的DataStage组件封装成一个Localcontainer。

图17:

封装组件

(3)构建好Localcontainer后,原来的ETLJob的布局变成如下图所示,这样整个布局看起来比之前要简化多了。

你可以通过单击下面的标签ContainerC3来查看这个Localcontainer里面的内容。

图18:

查看container的内容

Sharedcontainers

1.主要用途

Sharedcontainers除了具备Localcontainers的功能外,它还可以在不同的ETLJob之间实现共享。

如果多个ETLJob都需要实现某个逻辑功能,那么就可以把这个逻辑功能封装成一个Sharedcontainer。

2.构造方法

构造Sharedcontainers的方法和构造Localcontainers的方法几乎相同,只是Sharedcontainers是单独保存起来的。

具体构造步骤如下:

(1)打开一个ETLJob。

(2)选择要封装成Sharedcontainers的组件。

(3)选择Edit'ConstructContainer'Shared把选择的DataStage组件封装成一个Sharedcontainer。

(4)保存这个Sharedcontainer。

开发一个同时处理多个数据源和目标的ETLJob

本文的余下部分将开发一个同时处理多个数据源和目标的ETLJob,使大家对用IBMWebSphereDataStage处理多数据源问题有个清楚的认识。

这个ETLJob的功能是把DB2数据库source中的employee表和laborcost表先做Join,然后再聚合,最后把聚合后的结果存放到两个DB2数据库target1和target2中的departmentcost表中去。

这个ETLJob所用到的表的结构如下:

表1:

employee表

表2:

laborcost表

表3:

departmentcost表

开发步骤:

1.用DataStageDesigner从数据库中把上述的三张表结构导入到DataStageDesigner中(如何从数据库中导入表结构请参照本系列第一部分)。

存放的路径如下图所示:

图19:

存放路径

2.用DataStageDesigner新建一个ParallelETLJob,这个ETLJob的布局如下图所示:

这个ETLJob中包含四个DB2/UDBAPIStage,一个JoinStage,一个AggregatorStage和一个CopyStage。

DB2/UDBAPIStage负责连接数据表,JoinStage负责两个数据表之间的连接(根据一个或者多个字段),AggregatorStage负责对数据记录进行聚合(作用相当于SQL中的聚合函数),CopyStage负责把数据分发到不同的目标表中去;

图20:

ETLJob布局

3.双击DB2/UDBAPIStagelaborcost,会弹出如下图所示的属性框。

在标签Stage的子标签General中。

Servername(也就是要连接的DB2数据库的数据库名)一栏输入source,然后输入用于连接这个数据库的用户名和密码。

单击标签Output;

图21:

Laborcost的stage属性

4.在Output标签的子标签General中,设置Tablenames为laborcost,Querytype设置为GeneratedSQLQuery。

然后单击标签Columns;

图22:

Laborcost的Output属性

5.在标签Output的子标签Column中,单击按钮Load导入表结构laborcost到Columns中,这个表结构描述的是这个DB2/UDBAPIStage要连接的数据表laborcost的表定义。

图23:

导入表结构

6.单击按钮ViewData来查看表laborcost中的数据,弹出的窗口入下图所示,这个表中共有4条数据,单击按钮Close关掉数据窗口;

图24:

查看数据

7.双击DB2/UDBAPIStageemployee,会弹出如下图所示的属性框,在Servername一栏中输入source,然后单击标签Output;

图25:

Employee的stage属性

8.在标签Output的子标签General中,Tablenames设置为employee,Querytype选择GeneratedSQLquery,然后单击标签Columns;

图26:

Employee的output属性

9.在标签Output的子标签Column中,单击按钮Load导入表结构employee到Columns中,这个表结构描述的是这个DB2/UDBAPIStage要连接的数据表employee的表定义。

图27:

查看表定义

10.单击按钮ViewData查看表employee中的数据,弹出的数据窗口如下图所示,employee表格中共有三条数据;

图28:

查看表数据

11.双击JoinStage,弹出的属性窗口入下图所示,在标签Stage的子标签Properties中,JoinKeys一栏中选择Key=employee,Options一栏里面选择JoinType=Inner,然后单击标签Output;

图29:

JoinStage

12.在标签Output的子标签Column中,单击按钮Load导入表结构departmentcost到Columns中,然后单击OK完成对JoinStage的属性设置;

图30:

导入表结构

13.双击AggregatorStage,会弹出如下图所示的属性窗口,在标签Stage的子标签Properties中,GroupingKeys一栏设置为Group=departmentid,Aggregation一栏设置为AggregationType=Caculation,ColumnforCaculation=laborcost,SumOutColumn=laborcost,然后单击OK按钮完成对AggregatorStage的属性设置;

图31:

完成AggregatorStage的设置

14.双击DB2/UDBAPIStageLaborcostByDepartment1,会弹出如下图所示的属性框,在Stage标签的General子标签中,Servername设置为target1,然后输入用于连接这个数据库的用户名和密码,单击Input标签;

图32:

LaborcostByDepartment1属性

15.在Input标签的General子标签中,Tablename设置为departmentcost,Updateaction选择Clearthetable,theninsertrows,Createtableaction选择Donotcreatetargettable。

然后单击Columns子标签;

图33:

输入设置

16.在标签Input的Columns子标签中,单击Load按钮导入表结构departmentcost到Columns中,然后单击按钮OK完成对DB2/UDBAPIStageLaborcostByDepartment1属性设置;

图34:

导入表结构

17.以和设置DB2/UDBAPIStageLaborcostByDepartment1同样的方式设置DB2/UDBAPIStageLaborcostByDepartment2,唯一的不同是Servername设置为target2,其他的属性均设置为相同的;

18.所有的组件的属性现在都已经设置完毕,现在单击图标"编译"对刚开发好的ETLJob进行编译;

图35:

编译ETLJob

19.编译成功后,单击图标"运行"来运行ETLJob;

图36:

运行ETLJob

20.等到组件之间的连线变成了绿色,说明ETLJob已经成功执行,而且会显示一些统计信息在上面,比如每秒钟处理了多少条数据等;

图37:

运行结果

21.使用DataStageDesigner的ViewData功能查看目标数据库中的数据,如下图所示,目标数据库中的departmentcost表中有两条经过聚合后的记录,这也验证了我们开发的ETLJob的逻辑是正确的。

图38:

查看目标数据库

总结

本文首先介绍了IBMWebSphereDataStage中JobSequence和Container的用法,然后用一个ETLJob演示了IBMWebSphereDataStage处理多数据源方面的优势。

使读者对IBMWebSphereDataStage有了更进一步的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1