用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx
- 文档编号:10044158
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:35
- 大小:794.90KB
用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx
《用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx》由会员分享,可在线阅读,更多相关《用+IBM+WebSphere+DataStage+进行数据整合第+2+部分.docx(35页珍藏版)》请在冰豆网上搜索。
用+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有了更进一步的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM WebSphere DataStage 进行 数据 整合 部分