使用 IBM Optim Test Data Management Solution 的 IBM InfoSphere DataStage 作业验证步骤

在以下两种常见的作业生命周期场景中,需要对大量的提取、转换和加载 (ETL) 作业进行验证:将 ETL 项目/作业从旧版本迁移到新版本,或者将作业从开发环境迁移到质量保证环境,再迁移到生产环境。企业通常验证在软件的新版本或新硬件环境中运行的作业是否会生成与以前相同的结果,这会让他们确信新系统可替代旧系统。类似地,在将数据集成流程中的一个作业部署到生产环境中之前,必须确定开发、测试和生产环境中具有预期的行为。本文将提供一个分步示例,展示 DataStage 用户如何使用 IBM InfoSphere Optim Test Data Management Solution 验证 ETL 作业的结果。

Ajay Sood, 高级软件工程师, IBM

Ajay Sood 是位于印度 Bangalore 的一名 IBM 高级软件工程师。他效力于 IBM 已经超过了 13 个年头,一直都是产品开发(如 DB2 DataLinks 和 TXSeries-CICS)团队的开发人员。他拥有事务处理、中间件,以及在 UNIX 平台上进行系统编程的工作经验。


developerWorks 投稿作者

2013 年 8 月 26 日

简介:验证 DataStage 作业的需求

如今,企业正在实施以信息为中心的项目来转型其业务,并实现成本节省。许多数据集成或信息集成应用程序或流程都包含 ETL 并作为其中一个组件。

通常,一个 ETL 流程(工作单元)旨在完成以下工作:

  • 提取:从源系统提取数据并进行整理。
  • 转换:将数据转换为可在下一步中使用的所需格式。通常,这将涉及到应用核心业务逻辑来将数据转换为信息。
  • 加载:通常,将数据加载到数据库表/仓库中,以供报告引擎用于从转换的数据中获取洞察。

一个数据集成应用程序中的作业会经历两个常见的生命周期

  • 将作业从旧版本移植/迁移到运行其的 DataStage 软件或硬件的新版本上。
  • 将作业从开发环境迁移到测试环境,再迁移到生产环境。

上面两种用例都需要验证大量 DataStage 作业。企业通常验证在软件的新版本或新硬件环境中运行的作业是否会生成与以前相同的结果,这会让他们确信新系统可以替代旧系统。类似地,在将数据集成流程中的一个作业部署到生产环境中之前,必须确定开发、测试和生产环境中具有预期的行为。

本文将提供一个分步示例,展示 DataStage 用户如何使用 IBM InfoSphere Optim Test Data Management Solution 验证 ETL 作业的结果。


将 Optim Test Data 解决方案用于 DataStage

在 DataStage 作业的验证流程中,Optim Test Data Solution 可用于

  • 生成测试数据
  • 将作业输出与一个预期或基准输出进行对比

在验证过程中,DataStage 作业将引用生成的测试数据作为输入来源。执行 DataStage 作业后,将执行对比步骤来验证最终的输出。

该工作流程可按图 1 来表示。

图 1. 使用 Optim TDM 验证 DataStage 作业的工作流程
该图描述了使用 Optim Test Data Management 特性验证 DataStage 作业需要执行的总体步骤

在后续的各节中,您将看到这样一个示例:使用 DataStage 作业生成测试数据,然后将最终结果与已有的预期结果进行对比以验证作业。


预备软件

为了达到本次演示的目的,使用了以下软件。

  • IBM InfoSphere Information Server 8.7
  • IBM InfoSphere Optim 8.1
  • IBM DB2 LUW 9.7
  • Windows 2008

Information Server 和 Optim 支持的任何其他数据库也可用于该用途,但本文出于演示的目的使用了 DB2。


样例 DataStage 作业

在本示例中,您将看到如何使用 Optim Test Data 解决方案来生成测试数据,并对比一个 DataStage 作业的最终输出。

考虑这样一个样例作业,该作业从 DB2 中的一个表中读取数据,按照一个键对该数据排序,然后将已排序的数据加载到该数据库中的另一个表中。该数据由来源连接器阶段从源数据库表 [OPTIM_CUSTOMERS3] 中读取,接着传递到一个排序阶段,然后使用目标数据库连接器阶段 [OPTIM_CUSTOMERS4] 将其加载到目标表中,如图 2 所示。

图 2. 样例 DataStage 作业
该图演示了作为本文的示例使用的样例 Datastage 作业

来源数据库连接器属性指向 OPTIM_CUSTOMERS3 中的可用数据。可在图 3 中看到这些属性。

图 3. 样例作业来源数据库连接器属性
该图显示了在本文中用作示例的样例 Datastage 作业的连接属性

图 4 显示了来源表的相关列。

图 4. 样例作业来源数据库的列属性
该图显示了本文中用作示例的 Datastage 作业的输入阶段的列属性

类似地,目标连接器指向数据库表 OPTIM_CUSTOMERS4,并将该作业的输出写入 OPTIM_CUSTOMERS4 中。

我们的目的是使用 Optim 生成一些测试数据,并使用该数据在作业的回归测试过程中验证作业输出。

后续示例将演示如何配置 Optim 来设置测试数据和基准数据,以便在回归测试期间,ETL 作业可从测试表中读取数据,并将输出与基准数据进行对比。

后续几节将介绍如何实现 Optim 相关设置。


Optim 安装和配置

安装 Optim 并配置一个 Optim 目录(所有提取定义、对比请求等的存储库)。按照 Optim 文档说明进行安装和配置。

出于本示例的用途,考虑表 1 中的参数值。

表 1. 参数值
参数
Optim directoryOPTIMDIR
TEST DATABASEOPTIMDB
CONNECTION STRINGOPTIMDB
USERAdministrator
OPTIMDB AliasOPDB1

验证配置

可执行以下步骤来验证配置。

  1. 转到 Optim 主窗口,如图 5 所示。
    图 5. Optim 主窗口
    该图显示了调用 Optim 时启动的主窗口的屏幕截图
  2. 单击 File > Optim Directory。您将看到如图 6 所示的一个屏幕,其中显示了 Optim 目录的值。
    图 6. 带有 Connect 选项的 Optim 目录
    该图显示了 Optim Directory Configuration 窗口
  3. 单击 Connect,您可查看如图 7 所示的设置。
    图 7. 带有 Disconnect 选项的 Optim 目录
    该图显示了在用户按下 Connect 按钮时的 optim directory configuration 窗口
  4. 现在,单击 View 查看 Optim Directory 的设置,如图 8 所示。
    图 8. Optim Directory Editor
    该图显示了 optim directory configuration 窗口中的数据库版本和类型
  5. Connection 选项卡显示了连接字符串,如图 9 所示。
    图 9. 在 Optim Directory Editor 中查看连接字符串
    该图显示了 optim directory configuration 窗口中的连接字符串
  6. Server 选项卡显示了集合名称的详细信息,如图 10 所示。
    图 10. 在 Optim Directory Editor 中查看服务器详细信息
    该图显示了 optim directory configuration 窗口中的集合名称

设置测试数据

以下步骤展示了如何设置一个表,使用表中测试数据来测试一个 DataStage 作业。

设置一个提取定义来生成测试数据

  1. 返回到 Optim 主屏幕,如图 11 所示。
    图 11. Optim 主屏幕
    该图显示了 Optim 主窗口,其中包含各种可能的操作
  2. 单击 Action > Extract。Extract Request Editor 可用于设计提取请求。在本例中,提取请求名为 TEST3.EXT1,如图 12 所示。
    图 12. 使用 Extract Request Editor 提取测试数据
    该图显示了 Optim extract editor,其中包含用于设置测试数据的样例值

    出于设置测试数据的目的,您可以选择是否希望仅提取有限的行数(假设 500 行)。

现在需要设置访问定义。

设置用于生成测试数据的访问定义

执行以下步骤来设置用于生成测试数据的访问定义。

  1. 打开 Extract Request Editor 屏幕,然后单击 File > Edit Access Definitions,如图 13 所示。
    图 13. 提取测试数据期间的 Access Definition Editor
    该图显示了 Optim access definition editor,其中包含用于设置测试数据的样例值
    Access Editor 也可用于过滤测试数据中不需要的行。例如,可提取每个第 N 行。
  2. 单击 Access Editor 上的 File > Update and Return 以返回到 Extract Editor。

过滤要加载或对比的列

使用表映射编辑器和列映射编辑器:使用表映射编辑器和列映射编辑器设计转换请求的其中一个目标是,过滤掉最终的对比不需要的列。以下选项可用于过滤这些列。

  • 不要提取测试数据中的列:在提取对于测试和基准数据的请求时设置一个转换请求。
  • 在设置加载请求时,不要将列加载到测试和基准表中。
  • 在设计对比请求 [将输出与基准数据对比的请求] 时过滤列。

可能在一些场景中,用户希望过滤掉一些列来设置多个测试案例。例如,要测试的第一个场景可能需要对比列 A、B、C,而另一个场景可能需要对比列 D、E、F。在这些场景中,用户可能希望提取所有列,然后设置多个加载请求来将不同的列加载到不同的表中。另外,在对比时,如果数据是从不匹配的列(例如时间戳)的数据,用户则可能选择不对比某些列。

执行提取定义

  1. 在 Extract Editor 中,单击 File > Run。将出现 Extract Request Progress 屏幕,其中显示提取过程的进度,如图 14 所示。
    图 14. 执行提取请求
    该图显示在执行提取步骤来设置测试数据时 Optim extract definition editor 的屏幕截图
    完成这一步之后,将在磁盘上创建一个提取文件。这个提取文件是来自该表的具有一种特定格式的数据转储,可使用 Optim 的实用程序进一步处理。该文件 [在本例中为 test3.xf] 在 datadir 的首选项中指定的路径中创建(在本例中为 C:\IBM Optim\RT\BIN\datadir)。
  2. 在 Optim 主窗口中,单击 Options > Personal。将出现 Personal Option 编辑器,如图 15 所示。
    图 15. Personal Options
    该图显示了 Optim personal options 窗口,其中展示了示例中使用的人员选项值的样例。例如,这些值指出各种提取文件存储在何处。

生成了一个报告,其中显示了提取的详细信息。下一步是将测试数据加载到一个测试数据表中。要加载测试数据,需要设置一个加载请求。

将测试数据加载到一个测试数据库表中

  1. 在 Optim 主屏幕中,单击 Actions > Load,如图 16 所示。
    图 16. Optim 主屏幕中的加载选项
    该图显示了 Optim 主窗口,其中包含各种可能的操作
  2. 将出现 Load Request Editor Options 屏幕。在这个示例中,来自提取文件 test3.xf 的数据需要加载到表 [OPTIM_CUSTOMERS6] 中,这个表将用作测试数据表,如图 17 所示。
    图 17. Optim Load Request Editor 选项
    该图是 Optim Load request editor 的一个屏幕截图。该编辑器用于设置一个请求,以帮助将测试数据加载到数据库表中。

您将必须从 test3.xf 加载数据,该文件在提取阶段设置。

在加载测试数据期间设置表和列映射

下一步是设置一个表映射,进而设置目标表,然后设置一个列映射来将相关数据加载到目标表中,如图 18 所示。

图 18. 加载测试数据期间的表和列映射
该图是在设置一个加载请求期间使用的 Optim table map editor 的屏幕截图。这个编辑器用于在将测试数据加载到目标数据库表期间设置表和列映射。

可选择单击 Open Column Map 选项以设置列映射(以过滤掉用户不希望加载为测试数据的列,或者仅保存出现的列映射)。默认表定义将以提取文件(在本例中为 test3.xf)中的表定义为基础。

更新完所有列映射和表映射定义后,单击 Load Map Editor 中的 File > Run

执行加载请求以加载测试数据

单击 Load Request Editor 中的 File > Run 以执行加载请求,如图 19 所示。

图 19. 从 Load Request Editor 中执行加载请求
该图是使用 Optim load map editor 执行加载请求的屏幕截图。在本例中,设置了加载请求来帮助将测试数据加载到为测试数据设置的目标数据库表中。

测试数据加载到测试数据表 OPTIM_CUSTOMERS6 中,在回归测试期间,DataStage 作业将使用这个表访问测试数据。

如果目标表不存在,执行加载请求时还会创建目标表。

为测试数据创建目标表

如果目标表不存在,系统将提示您创建目标表 [在本例中为 OPTIM_CUSTOMERS6],如图 20 所示。

图 20. 为测试数据创建目标表
该图是在使用 Optim load request editor 加载测试数据时显示的 Optim create table editor 的屏幕截图。

运行创建步骤时,将得到用于创建目标表的 SQL。如果希望使用与实际生产表不同的模式来创建测试数据表,那么可以修改所提供的 SQL,并生成包含一个列子集的表,如图 21 所示。

图 21. 创建表(测试数据表)的 SQL
该图是在使用从 load request editor 启动的 Optim create request editor 加载测试数据时,显示的 SQL 查询的屏幕截图。

单击 Proceed 创建表和关联的键。

创建表后,将加载数据,如图 22 所示。

图 22. Load Request Progress 窗口
该图是处理加载请求时显示的屏幕截图。

设置预期的输出

设置预期的输出(或基准数据)也涉及到与设置测试数据类似的步骤(提取和加载基准数据)。

提取基准数据

在本例中,基准数据从 OPTIM_CUSTOMERS4 中提取并加载到 OPTIM_CUSTOMERS7 中。

  1. 转到 Optim 主屏幕。单击 Action > Extract。将出现 Extract Request Editor,可在其中设计提取请求。在本例中,提取请求名为 test4.xf,如图 23 所示。
    图 23. 用于基准数据的提取定义
    该图是 Optim extract request editor 的屏幕截图。图中显示了为设置基准数据而设置的提取请求的样例数据。
  2. 要设置用于生成基准数据的访问定义,可打开 Extract Request Editor,单击 File > Edit Access Definitions。将出现 Access Definition Editor,如图 24 所示。
    图 24. 用于基准数据的访问定义
    该图是 Optim access definition editor 的屏幕截图。图中显示了为设置预期的输出而设置的访问定义的样例数据。
  3. 单击 File > Run 以从 Load Request Editor 中执行加载请求,如图 25 所示。
    图 25. 用于基准数据的加载请求
    该图显示了填充了样例数据的 Optim load request editor,用于将基准数据加载到目标数据库表中。
  4. 图 26 显示了用于基准数据的加载请求报告的 Table Map Editor。
    图 26. 用于基准数据的加载请求报告的 Table Map Editor
    该图是执行加载请求以设置基准数据所需的 Optim load map editor 的屏幕截图。
  5. 您可以查看 Load Process Report,如图 27 所示。
    图 27. Load Process Report
    该图是执行加载请求以设置数据库中的基准数据后生成的最终报告的屏幕截图。

设置好测试和基准数据后,下一步是设置一个对比请求,以在回归测试期间对比执行一个 ETL 作业所生成的输出数据与基准数据。


设置对比请求

创建将填入 DataStage 作业的输出的表。一个对比请求需要相关的两个表在设计时都存在,如图 28 所示。

图 28. 从 Optim 主窗口中选择 Compare
该图显示了 Optim 主窗口的屏幕截图,其中包含各种可能的操作。

调用 Compare Request Editor

  1. 在 Optim 主窗口中,单击 Actions > Compare 设计一个对比请求。
  2. 在图 29 所示的示例中,可对比以下两个表:
    • OPTIM_CUSTOMERS7:拥有基准数据。
    • OPTIM_CUSTOMERS8:将在运行作业时使用 OPTIM_CUSTOMERS4 中设置的测试数据来填充。
    图 29. Compare Request Editor
    该图是 Optim Compare request editor 的屏幕截图。图中包含一些样例值,用于设置对比请求来让用户对比测试运行输出与数据库表中已设置的基准数据。
  3. 如果希望过滤掉一些列,这些列不需要参与作业输出与基准数据的对比,则需编辑 Column Map Editor,如图 30 所示。
    图 30. 用于对比请求的 Column Map Editor
    该图是通过 Optim compare request editor 启动的 Optim column map editor 的屏幕截图。该编辑器用于设置需要对比的列的列表。

设置对比结果的报告请求

可设置一个报告请求来指定最终的对比报告的目标,如图 31 所示。

图 31. 用于最终的对比结果的 Report Request Editor
该图是 Optim report request editor 的屏幕截图。该编辑器用于设置测试运行数据与基准数据之间的最终对比报告的位置的详细信息。

在使用测试数据执行 DataStage 作业后,保存对比请求以供以后从命令行调用。


使用测试数据执行 DataStage 作业

编辑 DataStage 作业以使用测试数据

在这个样例作业中,编辑来源阶段的连接器属性以指向测试数据。

修改来源连接器阶段以从 OPTIM_CUSTOMERS6 读取数据,修改目标连接器阶段以将输出写入 OPTIM_CUSTOMERS8 中。

如果对作业进行了适当的参数化,以将连接属性作为作业参数,那么将无需更改阶段属性以及重新编译作业。

设置一个命令行来调用 Optim Compare Request

以下是对比请求的一个命令行调用样例。

c:\ibmoptim\rt\bin\pr0cmnd" /r type=compare request=test22.cmp output=cmpreq.txt

使用测试数据的作业调用和对比命令的执行

执行该作业来对比输出 (OPTIM_CUSTOMERS8) 与基准数据 (OUTPUT_CUSTOMERS7)。


验证作业执行的结果

现在,可从命令行执行对比请求。图 32 显示了对比请求调用所生成的输出报告摘要样例。

图 32. 执行对比命令的样例输出
该图显示了执行 Optim 对比请求后的样例输出。在我们的示例中,我们对比了样例作业的测试运行输出与已使用 Optim 的提取和加载过程来设置的基准数据。

也可选择从 Optim 执行对比。对比报告也可使用报告编辑器从 Optim 查看,这将显示错误匹配的详细视图。


结束语

在常规开发生命周期中的作业迁移阶段期间执行作业验证,或者在版本间迁移时,需要工具来设置测试数据和对比生成的输出。IBM Optim TDM 解决方案同时具有两方面的功能,并可由 DataStage 用于执行作业验证。为了验证最终输出,用户可利用 Optim 的功能对比数据库中存储的复杂结构。

参考资料

学习

获得产品和技术

  • 使用 IBM 试用软件 构建您的下一个开发项目,这些软件可直接从 developerWorks 下载。
  • 以最适合您的方式 评估 IBM 产品:下载产品试用版,在线试用产品,在云环境中使用产品,或者在 SOA 沙盒 中花几小时学习如何高效地实现面向服务的架构。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=942466
ArticleTitle=使用 IBM Optim Test Data Management Solution 的 IBM InfoSphere DataStage 作业验证步骤
publish-date=08262013