【转载】用 IBM WebSphere DataStage 进行数据整合:第 2 部分
原文地址:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0604zhoudp/
在本文中,您将看到一个同时处理多个数据源和目标的 ETL Job 的开发过程,并了解 DataStage 中 Container 和 Job Sequence 的用法。
系列的第一部分介绍了 DataStage 的基本功能。本文将从以下几个方面深入介绍 IBM WebSphere DataStage 在数据整合方面的强大功能。
1. Job Sequence 的用法
2. DataStage Container 的用法
3. 开发一个同时处理多个数据源和目标的 ETL Job
在用 IBM WebSphere DataStage 进行数据整合的过程中,我们一般会开发很多个单独的 ETL Job 去完成特定的逻辑功能,这些 ETL Job 之间的运行顺序往往是有限制的,那么我们如何处理 ETL Job 之间的这种依赖关系呢?IBM WebSphere DataStage 提供了处理这种问题的方法,那就是使用 Job Sequence。使用 Job Sequence 可以方便的处理 ETL Job 之间的依赖以及运行顺序问题。下面我们通过开发一个简单的 Job Sequence 来演示 Job Sequence 的用法。
开发一个 Job Sequence 和开发一个 ETL Job 的方法是类似的,都是用 DataStage Designer 来开发。我们将要开发的这个 Job Sequence 的功能是实现两个 ETL Job 的顺序执行,并且在第一个 ETL Job 运行成功的情况下第二个 ETL Job 才开始执行。因此我们必须先准备两个 ETL Job,这两个 ETL Job 的名字分别为 Job1 和 Job2。
开发步骤
1. 打开 DataStage Designer。如下图所示,从下拉列表中选择 Job Sequence。这样就会新建一个 Job Sequence;
2. 新建的 Job Sequence 如下图所示。这时候这个 Job Sequence 还没有被保存。单击 DataStage Designer 的保存按钮来保存 Job Sequence;
3. 弹出的保存对话框如下图所示,在 Job name 一栏中填入 SampleJobSequence。在 Category 一栏中填入 sequence,单击 OK 按钮保存 Job Sequence;
4. 保存好 Job Sequence 后,从左侧面板 Sequence 一栏中的下拉列表中添加两个 Job Activity 到右侧的面板中,并把这两个 Job Activity 连接起来;
5. 双击左边的 Job Activity Stage,会弹出如下图所示的属性框。在 General 标签中,Name 一栏输入 Job1,这是这个 Job Activity Stage 的名字。然后单击标签 Job;
6. 在标签 Job 中单击右侧的按钮来选择这个 Job Activity 连接到哪个 ETL Job 上面;
7. 在弹出的选择 ETL Job 的对话框中选择 Job1 并单击按钮 OK;
8. 在标签 Trigger 中,在 Expression Type 下拉列表中选择 OK-(Conditional)。这个选项的意思是只有在这个 Job Activity Stage 连接的 ETL Job 成功执行后,才能执行后面的 ETL Job。单击按钮 OK 完成对 Job Activity Stage Job1 的配置;
9. 双击右边的 Job Activity Stage,会弹出如下图所示的属性框。在 General 标签中,Name 一栏输入 Job2,这是这个 Job Activity Stage 的名字。然后单击标签 Job;
10. 在标签 Job 中,单击右侧按钮,会弹出一个选择 ETL Job 的对话框,在这个对话框中选择 ETL Job Job2。然后单击 OK 按钮;
11. 这时你会注意到 ETL Job Job2 已经被添加进来。单击按钮 OK 完成对这个 Job Activity Stage 的配置;
12. 配置完成后,单击图标"编译"来编译该 Job Sequence;
13. 编译成功后,弹出的对话框中会显示如下图所示的信息。单击按钮 Close;
14. 打开 DataStage Director,选中 SampleJobSequence,然后单击"运行"按钮运行它;
15. 运行完成后,这个 Job Sequence 的状态会变成 Finished。这说明这个 Job Sequence 中的两个 ETL Job Job1和Job2 都已经成功执行。如果这两个 ETL Job 中的任何一个执行失败的话,那么这个 Job Sequence 的状态就会变成 Aborted。
DataStage 提供了两种类型的 Container:Local containers 和 Shared containers,下面将分别介绍这两种类型的 Container。
Local containers
1。主要用途
Local containers 主要是用来简化 ETL Job 的设计的,当你的某个 ETL Job 非常复杂的时候,这个 ETL Job 可能会包含非常多的 DataStage 的组件。把这些组件同时在一个面板上显示出来的话就会使整个 ETL Job 的逻辑显得非常混乱,这时候你就可以用一个或者多个 Locale container 把这个 ETL Job 中具有特定功能的逻辑模块(比如数据抽取模块)封装起来。这样就会使这个 ETL Job的流程非常清晰。
2。构造方法
(1) 用 DataStage Designer 打开一个创建好的 ETL Job。然后选择你要封装到 Local container 里面的组件。如下图所示:
(2) 选择 Edit'Construct Container'Local 把选择的 DataStage 组件封装成一个 Local container。
(3) 构建好 Local container 后,原来的 ETL Job 的布局变成如下图所示,这样整个布局看起来比之前要简化多了。你可以通过单击下面的标签 ContainerC3 来查看这个 Local container 里面的内容。
Shared containers
1. 主要用途
Shared containers 除了具备 Local containers 的功能外,它还可以在不同的 ETL Job 之间实现共享。如果多个 ETL Job 都需要实现某个逻辑功能,那么就可以把这个逻辑功能封装成一个 Shared container。
2. 构造方法
构造 Shared containers 的方法和构造 Local containers 的方法几乎相同,只是 Shared containers 是单独保存起来的。具体构造步骤如下:
(1) 打开一个 ETL Job。
(2) 选择要封装成 Shared containers 的组件。
(3) 选择 Edit'Construct Container'Shared 把选择的 DataStage 组件封装成一个 Shared container。
(4) 保存这个Shared container。
开发一个同时处理多个数据源和目标的 ETL Job
本文的余下部分将开发一个同时处理多个数据源和目标的 ETL Job,使大家对用 IBM WebSphere DataStage 处理多数据源问题有个清楚的认识。这个 ETL Job 的功能是把 DB2 数据库 source 中的 employee 表和 laborcost 表先做 Join,然后再聚合,最后把聚合后的结果存放到两个 DB2 数据库 target1 和 target2 中的 departmentcost 表中去。
这个 ETL Job 所用到的表的结构如下:
表 1:employee 表
表 2:laborcost 表
表 3:departmentcost 表
开发步骤:
1. 用 DataStage Designer 从数据库中把上述的三张表结构导入到 DataStage Designer 中(如何从数据库中导入表结构请参照本系列第一部分)。存放的路径如下图所示:
2. 用 DataStage Designer 新建一个 Parallel ETL Job,这个 ETL Job 的布局如下图所示:这个 ETL Job 中包含四个 DB2/UDB API Stage,一个 Join Stage,一个 Aggregator Stage 和一个 Copy Stage。DB2/UDB API Stage 负责连接数据表,Join Stage 负责两个数据表之间的连接(根据一个或者多个字段),Aggregator Stage 负责对数据记录进行聚合(作用相当于SQL中的聚合函数),Copy Stage 负责把数据分发到不同的目标表中去;
3. 双击 DB2/UDB API Stage laborcost,会弹出如下图所示的属性框。在标签 Stage 的子标签 General 中。Server name(也就是要连接的 DB2 数据库的数据库名)一栏输入 source,然后输入用于连接这个数据库的用户名和密码。单击标签 Output;
4. 在 Output 标签的子标签 General 中,设置 Table names 为 laborcost,Query type 设置为 Generated SQL Query。然后单击标签 Columns;
5. 在标签 Output 的子标签 Column 中,单击按钮 Load 导入表结构 laborcost 到 Columns 中,这个表结构描述的是这个 DB2/UDB API Stage 要连接的数据表 laborcost 的表定义。
6. 单击按钮 View Data 来查看表 laborcost 中的数据,弹出的窗口入下图所示,这个表中共有 4 条数据,单击按钮 Close 关掉数据窗口;
7. 双击 DB2/UDB API Stage employee,会弹出如下图所示的属性框,在 Server name 一栏中输入 source,然后单击标签 Output;
8. 在标签 Output 的子标签 General 中,Table names 设置为 employee,Query type 选择 Generated SQL query,然后单击标签 Columns;
9. 在标签 Output 的子标签 Column 中,单击按钮 Load 导入表结构 employee 到 Columns 中,这个表结构描述的是这个 DB2/UDB API Stage 要连接的数据表 employee 的表定义。
10. 单击按钮 View Data 查看表 employee 中的数据,弹出的数据窗口如下图所示,employee 表格中共有三条数据;
11. 双击 Join Stage,弹出的属性窗口入下图所示,在标签 Stage 的子标签 Properties 中,Join Keys 一栏中选择 Key = employee,Options 一栏里面选择 Join Type = Inner,然后单击标签Output;
12. 在标签 Output 的子标签 Column 中,单击按钮 Load 导入表结构 departmentcost 到 Columns 中,然后单击 OK 完成对 Join Stage 的属性设置;
13. 双击 Aggregator Stage,会弹出如下图所示的属性窗口,在标签 Stage 的子标签 Properties 中,Grouping Keys 一栏设置为 Group = departmentid,Aggregation 一栏设置为 Aggregation Type = Caculation,Column for Caculation = laborcost,Sum Out Column = laborcost,然后单击 OK 按钮完成对 Aggregator Stage 的属性设置;
14. 双击 DB2/UDB API Stage LaborcostByDepartment1,会弹出如下图所示的属性框,在 Stage 标签的 General 子标签中,Server name 设置为 target1,然后输入用于连接这个数据库的用户名和密码,单击 Input 标签;
图 32:LaborcostByDepartment1 属性
15. 在 Input 标签的 General 子标签中,Table name 设置为 departmentcost,Update action 选择 Clear the table,then insert rows,Create table action 选择 Do not create target table。然后单击 Columns 子标签;
16. 在标签 Input 的 Columns 子标签中,单击 Load 按钮导入表结构 departmentcost 到 Columns 中,然后单击按钮 OK 完成对 DB2/UDB API Stage LaborcostByDepartment1 属性设置;
17. 以和设置 DB2/UDB API Stage LaborcostByDepartment1 同样的方式设置 DB2/UDB API Stage LaborcostByDepartment2,唯一的不同是 Server name 设置为 target2,其他的属性均设置为相同的;
18. 所有的组件的属性现在都已经设置完毕,现在单击图标"编译"对刚开发好的 ETL Job 进行编译;
19. 编译成功后,单击图标"运行"来运行 ETL Job;
20. 等到组件之间的连线变成了绿色,说明 ETL Job 已经成功执行,而且会显示一些统计信息在上面,比如每秒钟处理了多少条数据等;
21. 使用 DataStage Designer 的 View Data 功能查看目标数据库中的数据,如下图所示,目标数据库中的 departmentcost 表中有两条经过聚合后的记录,这也验证了我们开发的 ETL Job 的逻辑是正确的。
本文首先介绍了 IBM WebSphere DataStage 中 Job Sequence 和 Container 的用法,然后用一个 ETL Job 演示了 IBM WebSphere DataStage 处理多数据源方面的优势。使读者对 IBM WebSphere DataStage 有了更进一步的了解。
相关推荐
随着大数据技术的不断发展和企业对数据价值认识的加深,未来 IBM WebSphere DataStage Advanced Enterprise Edition 将继续朝着更加智能化、自动化以及易于使用的方向发展,为企业提供更多创新的数据处理解决方案。...
1. **WebSphere DataStage 和 QualityStage 的关系**:首先阐述 WebSphere DataStage 与 QualityStage 之间的联系,后者作为前者的一个组成部分,共同为企业提供全面的数据集成和质量提升服务。 2. **QualityStage...
IBM WebSphere DataStage是IBM旗下的一款企业级数据整合工具,专为大规模数据处理和ETL(Extract, Transform, Load)操作设计。它能够高效地从各种数据源抽取数据,执行复杂的数据转换,并将数据加载到目标系统中,...
IBM DataStage是IBM公司开发的一款强大的数据集成工具,它属于IBM Information Server的一部分,主要用于构建企业级的数据集成解决方案。Websphere则是IBM的一个软件平台,它提供了各种服务和工具,包括应用服务器、...
为了解决这些问题,IBM 开发了 WebSphere DataStage,这是一种强大的数据整合工具,能够极大地减少手动编码的需求,并简化数据整合流程。DataStage 提供了一个图形化的开发环境,使得从各种数据源抽取数据、转换数据...
### IBM WebSphere DataStage企业版简介 #### 一、概述 IBM WebSphere DataStage作为IBM Software Group旗下的一款强大数据集成工具,在数据仓库建设和ETL(提取、转换、加载)流程中发挥着重要作用。本篇文章旨在...
IBM WebSphere DataStage(下面简称为 DataStage)为整个 ETL 过程提供了一个图形化的开发环境,它是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集或数据仓库的集成工具。...
Datastage作为IBM InfoSphere Information Server的重要组成部分之一,是一款强大的企业级数据集成工具。它能够帮助用户实现数据的抽取、转换和加载(ETL),从而为企业的决策支持系统提供高质量的数据来源。本指南...
WebSphere DataStage 8.0 是 IBM Information Server 的核心组件之一,主要用于高效的数据集成任务。它具备以下关键特性: 1. **用户体验改进**: - **快速查找**:增强了在仓库树中查找项目的功能,支持全名或...
假设一家大型零售商希望整合其分布在不同地区和部门的数据,以便更好地进行市场分析和决策支持。使用DataStage可以帮助其实现以下目标: - **统一数据标准**:通过定义统一的数据模型和标准,确保所有数据的一致性...
在用 IBM WebSphere DataStage 进行数据整合的过程中,我们一般会开发很多个单独的 ETL Job 去完成特定的逻辑功能,这些 ETL Job 之间的运行顺序往往是有限制的。那麼我们如何处理 ETL Job 之间的这种依赖关系呢?...
第1章介绍部分,简单概述了DataStage的基本概念和用途,它是IBM提供的一个强大的ETL(提取、转换、加载)工具,用于在不同数据源之间进行数据整合和清洗。DataStage提供了一个图形化的开发环境,让用户能够以直观的...
DataStage 是一款强大的数据集成工具,由 Ascential 公司开发,后来被 IBM 收购并纳入其 WebSphere 产品线中。它主要用于从多种数据源抽取、转换和加载数据,尤其适用于构建数据仓库。DataStage 提供了一个图形化的...
IBM DataStage 8.1 是一个强大的数据集成工具,它属于 IBM Information Server 的一部分,用于在Windows平台上构建、运行和管理复杂的数据集成流程。本文档将深入探讨 DataStage 的安装过程,以及涉及到的关键组件和...
IBM DataStage V8版本在数据处理领域具有广泛的应用,它能够帮助用户从各种数据源抽取、转换和加载数据,以实现数据清洗、整合和分析。 1. **数据抽取(Extract)**: - DataStage提供了多种数据源连接器,如关系...
在数据集成领域,IBM WebSphere DataStage 是一款强大的图形化工具,用于执行ETL(提取、转换、加载)任务。DataStage 提供了一个名为 DataStage BASIC 的编程语言,允许开发人员自定义功能函数以满足特定的数据处理...