使用 InfoSphere QualityStage 标准化您的数据

数据标准化是确保数据符合质量规则的一种流程。本教程将介绍一些数据标准化的概念,展示如何利用 IBM® InfoSphere® QualityStage™ 获得标准化的数据。初次接触 QualityStage 标准化的读者将获得对此流程的基本认识。读者应对 InfoSphere DataStage® 作业开发有基本的了解。本教程涵盖了使用国家标识符、域的预处理程序 (pre-processor)、特定于域的规则集以及规则集的验证类型的标准化。

Dhanunjaya Lokireddy, 高级 QA 工程师, IBM China

Dhanunjaya Lokireddy 是隶属于印度海德拉巴 IBM India Software Lab 的 InfoSphere QualityStage 团队的一名高级 QA 工程师。他在 IBM 已工作了六年,曾在 Information Server 产品领域的多个 QA 团队任职。



2011 年 11 月 21 日

开始之前

编辑提示:本教程中出现的所有私人数据均属虚构,仅作为示例而创建。

InfoSphere QualityStage 概述

企业往往面临着数据不够标准的问题。数据可能是在不同系统中采用不一致的方式输入的,导致相同的记录表现为不同的形式。举例来说,以下两条记录描述了相同地址的同一个人,但记录中的姓名和地址看起来大不相同:

Bob Christiansan614 Columbus Ave #3, Boston, Massachusetts 02116
R.J. Christensen614 Columbus Suite #3, Suffolk County 02116

导致 “出乎意料的数据” 的另一种常见错误就是可能将数据放在了不恰当的位置。在下面的示例中,有多个字段包含错误的信息类型。name 字段包含地址信息,tax ID 字段包含电话号码,而 telephone 字段包含城市名称信息。这种数据放置不当的错误往往会导致应用程序出错。

姓名税号电话号码
Becker & Co. C/O Bill025-37-1998415-392-2770
B Smith DBA Lime Cons.228-02-16956173380220
1st Natl Provident34-26718543309321
HP 15 State St.508-466-1550Orlando

第三种常见的数据标准化问题涉及到缺乏一致的标识符。下面的示例提供了三条包含产品说明的记录。它们看似不同,实则相同。造成这种现象的原因就在于缺乏一致的标识符。

91-84-301 RS232 Cable 5' M-F CandS
CS-89641 5 ft. Cable Male-F, RS232 #87951
C&SUCH6 Male/Female 25 PIN 5 Foot Cable

InfoSphere QualityStage(下文简称为 QualityStage)是 InfoSphere Information Server 的产品组件之一,它能解决上述问题,提供维护主数据实体准确视图的一种方法。QualityStage 具有以下功能:

  • 调查:帮助您理解数据反常的特征和范围
  • 标准化:分析个别字段,根据业务标准使其统一
  • 匹配:识别数据源内和数据源之间的重复记录
  • 存留:帮助消除重复记录,创建同类最佳的数据记录

理解标准化流程

标准化可以分析任意形式的字段,然后使用标准的格式将其分隔为单独的组件字段,或者将数据指派给恰当的元数据字段。

数据往往是采用多种不同的形式进行捕捉的,原因如下:

  • 数据录入错误
  • 表示相同数据值的不同惯例
  • 系统之间的语义差异
  • 相同数据元素的多个来源
  • 缺乏数据质量标准

然而,目前系统需要整洁的数据来制作报告和制定决策。标准化可帮助提高自由形式的列中所存储的数据的可访问性,确保每个数据元素都具有相关的内容和格式。它能将数据值统一为标准形式,并准备数据元素以便实现更高效的匹配。它还有助于识别和删除无效的数据值。标准化可为了实现进一步的处理而准备数据,因此极为重要。

标准化基于一种称为规则集 的特殊指令工作。部分规则集如下:

  • 国家标识符,例如 COUNTRY
  • 域的预处理程序,例如 USPREP
  • 特定于域,例如 USNAME
  • 验证,例如 VDATE

打包的规则集大多是特定于国家的。举例来说,美国和日本各有不同的姓名标准化规则集。就 InfoSphere Information Server V8.5 而言,这些规则集是使用 QualityStage 打包的。高级用户可以根据自己的业务需求创建规则集。

规则集有三种必要组件:

  • 分类表:包含关键词、标准值和用户定义的类
  • 字典文件:定义输出列的布局
  • 模式操作文件:包含填充输出列和分析参数的逻辑
图 1. 标准化流程概览
展示标准化流程的流程图的图片

图 1 展示了标准化流程的概况:

  1. 使用模式操作文件 (SEPLIST/STRIPLIST) 参数分析输入数据
  2. 从分类表中指派用户定义的类,并为其余标识应用默认类
  3. 使用字典文件形成输出字段
  4. 使用模式操作文件将数据填充到输出字段中

本教程的剩余部分包括使用不同类型的规则集创建标准化作业的具体步骤及示例。


实现国家标识符规则集

编辑提示:本教程中出现的所有私人数据均属虚构,仅作示例而创建。

国家标识符规则集可以帮助您使用规定数据来识别国家。举例来说,请考虑以下数据:

清单 1. 国家标识符示例的数据记录
Andrew Conacher Level 10, 135 Exhibition St Melbourne VIC 3000
Ian Williams 167-170 Washway Road Sale Manchester M33 6RJ
Eric Ferm 17 Wellington Street W. 4th Floor Toronto, Ontario, M5K 1B1
Dr Jeffery David Thomson Jnr PHD 52280A NC 42 72 HWY # 42

此数据中包含分属不同国家的记录。下面的步骤展示了如何使用 QualityStage 来识别各记录所属的国家。

第 1 步:创建一个并行作业

创建一个并行作业,如 图 2 中所示。 将输入顺序文件阶段设置为读取输入文件,其中包括上面给出的示例记录。

图 2. 具有顺序和标准化阶段的并行作业
展示左侧的数据经过 standardize_country 作业生成右侧的 output_country 的示意图

图 3 展示了设计器选项板,其中选中了标准化阶段。

图 3. 展示标准化阶段的设计器选项板
展示已选中标准化选项的屏幕快照

图 4 展示了包含来自以上清单的数据的输入顺序文件。

图 4. 输入顺序文件视图数据
展示数据输入顺序文件视图数据的图片

第 2 步:配置标准化阶段

  1. 创建一个新流程。使用工具栏中的 New Process 按钮即可。
    图 5. 标准化阶段属性
    展示标准化阶段属性的屏幕快照,您可以在这里选择 New Process

    下一个屏幕是标准化新规则流程的窗口,其中列举了可用列。

    图 6. 标准化新规则流程的窗口
    展示可用数据列的图片
  2. 对于所列出的数据列(也就是输入数据文件源数据),请选择 Rule Sets > Other > COUNTRY
    图 7. 规则集选择
    展示所选国家的图片
  3. 单击 > 按钮即可将数据列移动到 Selected Column 区域。
    图 8. Standardize rule process 窗口及选中的规则集和列
    展示 standardize rule process 窗口及选中的规则集和列的图片
  4. 添加元数据定界符。在此类规则集中,元数据定界符扮演着至关重要的角色。定界符用于设置默认国家编码。如果国家规则集无法根据所提供的信息来确定国家,则默认情况下会使用定界符值。元数据定界符的格式是 ZQ<Country Code>ZQ。在本例中,我们将 US 设置为默认国家。在 Literal 字段中输入 ZQUSZQ
    图 9. Standardize rule process 窗口,已输入元数据定界符
    展示 Literal 字段中的 ZQUSZQ 的图片
  5. 单击 Literal 字段旁的 > 按钮。
    图 10. 使用文字设置国家编码
    展示将文字移动到 selected column 区域的图片
  6. 使用 Move UpMove Down 按钮,按照以下方式排列元数据定界符:

    ZQUSZQ
    Data

    单击 OK 添加流程。
    图 11. Standardize rule process 窗口及已经全部按顺序排列的元数据定界符
    展示 standardize rule process 窗口及已经全部按顺序排列的元数据定界符的图片
    图 12. 标准化阶段属性窗口及已创建的规则流程
    展示标准化阶段属性窗口及已创建的规则流程的图片
  7. 映射输出列(Stage Properties > Output > Mapping
    标准化阶段将根据所选规则集生成一些列。本例中选中了以下列: ISOCountryCode_COUNTRY、IdentifierFlag_COUNTRY 以及 “Data” 输入字段。

    将上面列出的列拖放到输出中。
    图 13. 标准化阶段输出列映射
    展示标准化阶段输出列映射的图片

第 3 步:配置输出文件并运行作业

配置输出顺序文件阶段,以提供必要的字段,例如文件名和格式等其他必要设置。运行作业并验证输出。所生成的输出如下:

图 14. 输出顺序文件视图数据
展示各记录的国家编码的图片

Andrew Conacher Level 10, 135 Exhibition St Melbourne VIC 3000
此记录的国家编码识别为 AU(ISOCountryCode_COUNTRY)
国家编码是仅根据数据识别的(IdentifierFlag_COUNTRY)

Ian Williams 167-170 Washway Road Sale Manchester M33 6RJ
此记录的国家编码识别为 GB(ISOCountryCode_COUNTRY)
国家编码是仅根据数据识别的(IdentifierFlag_COUNTRY)

Eric Ferm 17 Wellington Street W. 4th Floor Toronto, Ontario, M5K 1B1
此记录的国家编码识别为 CA(ISOCountryCode_COUNTRY)
国家编码是仅根据数据识别的(IdentifierFlag_COUNTRY)

Dr Jeffery David Thomson Jnr PHD 52280A NC 42 72 HWY # 42
此记录的国家编码识别为 US(ISOCountryCode_COUNTRY)
在这里,国家编码不是根据数据识别的,因此根据元数据定界符使用默认国家编码(US (IdentifierFlag_COUNTRY))


实现域的预处理程序

编辑提示:本教程中出现的所有私人数据均属虚构,仅作为示例而创建。

域的预处理程序将识别给定数据中不同的域(例如姓名、地址和区域),并将其填充到正确的字段中。请考虑以下数据:

"52280A NC 42 72 HWY # 42","KNOXVILLE TN 37920","Dr Jeffery David Thomson Jnr PHD"
"International Business Machines Corp","1480 CARRIAGE LN APT 301","AUBURN IN 467069555"
"Peter heines","ASHVILLE NEW YORK 147109762","930 SOUTH BROAD ST EAST APT H"

其中具有三个字段:Field1、Field2 和 Field3(请参见 图 16)。但数据分散在所有三个字段中。举例来说,第一条记录的姓名位于 Field3 中,第二条记录的姓名则位于 Field1 中,第三条记录的姓名也位于 Field1 中。我们将使用预处理程序规则集创建一个标准化作业,以识别不同的域。

第 1 步:创建一个并行作业

创建一个并行作业,如 图 15 中所示。将输入顺序文件阶段设置为读取输入文件,其中包括上述示例记录

图 15. 具有顺序和标准化阶段的并行作业
展示具有顺序和标准化阶段的并行作业的图片
图 16. 输入顺序文件视图数据
展示输入顺序文件视图数据的图片

第 2 步:配置标准化阶段

  1. 创建一个新流程。
    图 17. 标准化阶段属性
    展示标准化阶段属性的图片
    图 18. 标准化新规则流程窗口
    展示标准化新规则流程窗口的图片
  2. 为可用列 Field1、Field2 和 Field3 选择 USPREP 规则集(Standardization Rules > USA > USPREP > USPREP),这些列也就是输入顺序文件元数据。
    图 19. 规则集选择
    展示规则集选择的图片
  3. 单击三个字段的 > 按钮,将其移动到选中列区域中。
    图 20. 包含选中的规则集和列的 Standardize rule process 窗口
    展示包含包含选中的规则集和列的 Standardize rule process 窗口的图片
  4. 添加元数据定界符。元数据定界符用于表明我们希望各输入字段得到哪种类型的信息。如果预处理程序无法确定某个标识的域,则将默认使用通过元数据定界符指定的域。元数据定界符的格式为:ZQ<Domain>ZQ。在本例中,我们希望 Field1 包含 Name 数据、Field2 包含 Address 数据、Field3 包含 Area 数据。添加三个定界符:ZQNAMEZQ、ZQADDRZQ 和 ZQAREAZQ。在 Literal 字段中输入 ZQNAMEZQ
    图 21. 输入元数据定界符之后的 Standardize rule process 窗口
    展示输入元数据定界符之后的 Standardize rule process 窗口的图片
  5. 单击 > 按钮。
    图 22. 选中了元数据定界符的 Standardize rule process 窗口
    展示选中了元数据定界符的 Standardize rule process 窗口的图片
  6. 重复第 4 步和第 5 步,添加定界符 ZQADDRZQ 和 ZQAREAZQ。
    图 23. 选中了全部元数据定界符的 Standardize rule process 窗口
    展示选中了全部元数据定界符的 Standardize rule process 窗口的图片
  7. 使用 Move UpMove Down 按钮按照以下方式排列元数据定界符:

    ZQNAMEZQ
    Field1
    ZQADDRZQ
    Field2
    ZQAREAZQ
    Field3

    单击 OK 添加流程。
    图 24. 按顺序排列好全部元数据定界符的 Standardize rule process 窗口
    展示按顺序排列好全部元数据定界符的 Standardize rule process 窗口的图片
    图 25. 标准化阶段属性窗口及已创建的规则流程
    展示标准化阶段属性窗口及已创建的规则流程的图片
  8. 映射输出列(Stage Properties > Output > Mapping
    标准化阶段将根据所选规则集生成列。本例中选中了以下列:NameDomain_USPREP、AddressDomain_U SPREP 和 AreaDomain_USPREP

    将上述列拖放到输出中。
    图 26. 标准化阶段输出列映射
    展示标准化阶段输出列映射的图片

第 3 步:配置输出文件并运行作业

配置输出顺序文件阶段,使之按需提供必要的字段,例如文件名和格式等其他设置。运行作业并验证输出。图 27 展示了所生成的输出。

图 27. 输出顺序文件视图数据
展示输出顺序文件视图数据的图片

"International Business Machines Corp","1480 CARRIAGE LN APT 301","AUBURN IN 467069555"
“International Business Machines Corp” 被识别为名称域(NameDomain)
“1480 CARRIAGE LN APT 301” 是地址域(AddressDomain)
“AUBURN IN 467069555” 是地区域(AreaDomain)

"52280A NC 42 72 HWY # 42","KNOXVILLE TN 37920","Dr Jeffery David Thomson Jnr PHD"
“Dr Jeffery David Thomson Jnr PHD” 被识别为名称域(NameDomain)
“52280A NC 42 72 HWY # 42” 是地址域(AddressDomain)
“KNOXVILLE TN 37920” 是地区域(AreaDomain)

"Peter heines","ASHVILLE NEW YORK 147109762","930 SOUTH BROAD ST EAST APT H"
“Peter heines” 被识别为名称域(NameDomain)
“930 SOUTH BROAD ST EAST APT H” 是地址域(AddressDomain)
“ASHVILLE NEW YORK 147109762” 是地区域(AreaDomain)


实现名称标准化

编辑提示:本教程中出现的所有私人数据均属虚构,仅作为示例而创建。

这是特定于域的标准化类型。考虑以下名称示例。

Dr Jeffery David Thomson Jnr PHD
International Business Machines Corp
Peter heines

这些示例中包含个人姓名和组织名称,假设这些示例属于美国 (US)。我们的目的在于识别名称的不同部分,例如主要名称、名字和姓氏。

第 1 步:创建一个并行作业

创建一个并行作业,如 图 28 中所示。将输入顺序文件阶段配置为读取包含上述示例记录的输入文件。

图 28. 具有顺序和标准化阶段的并行作业
展示具有顺序和标准化阶段的并行作业的图片
图 29. 输入顺序文件视图数据
展示输入顺序文件视图数据的图片

第 2 步:配置标准化阶段

  1. 创建一个新流程。
    图 30. 标准化阶段属性
    展示标准化阶段属性的图片
    图 31. 标准化新规则流程窗口
    展示标准化新规则流程窗口的图片
  2. 为 “name” 列选择 USNAME 规则集(Standardization Rules > USA > USNAME > USNAME),“name” 列也是输入顺序文件元数据。
    图 32. 规则集选择
    展示规则集选择的图片
  3. 单击 > 按钮。
    图 33. 包含选中的规则集的 Standardize rule process 窗口
    展示包含选中的规则集的 Standardize rule process 窗口的图片
  4. 请勿添加 “Optional NAMES Handling” 选项。Optional NAMES Handling 字段具有以下选项:
    • Process All as Individual:所有列都将标准化为个人姓名。
    • Process All as Organization:所有列都将标准化为组织名称。
    • Process Undefined as Individual:所有未处理的列都将标准化为个人姓名。
    • Process Undefined as Organization:所有未处理的列都将标准化为组织名称。
    如果我们了解输入文件中的名称的类型,那么这种选项将非常有用。举例来说,如果文件包含的主要是组织名称,那么指定 Process All as Organization 就能够消除确定名称类型的处理步骤,从而提高性能。
  5. 单击 OK
    图 34. 包含选中的规则集和列的 Standardize rule process 窗口
    展示包含选中的规则集和列的 Standardize rule process 窗口的图片
    图 35. 标准化阶段属性窗口及已创建的规则流程
    展示标准化阶段属性窗口及已创建的规则流程的图片
  6. 映射输出列(Stage Properties > Output > Mapping
    标准化阶段将根据所选规则集生成列。本例中选中了以下列: NameType_USNAME、GenderCode_USNAME、NamePrefix_USNAME、FirstName_USNAME、 MiddleName_USNAME、PrimaryName_USNAME、NameGeneration_USNAME 和 NameSuffix_USNAME。

    将上述列拖放到输出中。
    图 36. 标准化阶段输出列映射
    展示标准化阶段输出列映射的图片

第 3 步:配置输出文件并运行作业

配置输出顺序文件阶段,使之按需提供必要的字段,例如文件名和格式等其他设置。运行作业并验证输出。图 37 展示了所生成的输出。

图 37. 输出顺序文件视图数据
展示输出顺序文件视图数据的图片

Dr Jeffery David Thomson Jnr PHD
数据被识别为个人姓名 (NameType)
性别为男性 (GenderCode)
Dr 是姓名前缀 (NamePrefix)。
Jeffery 是名字 (FirstName)。
David 是中名 (MiddleName)。
Thomson 是主要名称 (PrimaryName)。
Jr 被识别为代 (NameGeneration),在这里,实际输入包括 Jnr,但标准化阶段提供的是常用的标准格式
PHD 是姓名后缀 (NameSuffix)。

International Business Machines Corp
数据被识别为组织名称 (NameType)。
International Business Machines 是主要名称 (PrimaryName)。
Corp 是名称后缀 (NameSuffix)。

Peter heines
数据被识别为个人姓名 (NameType)。
性别为男性 (GenderCode)。
Peter 是名字 (FirstName)。
Heines 是主要名称 (PrimaryName)。


实现验证

此类规则集主要用于验证数据(例如,VDATE、VEMAIL)。请考虑以下日期示例:

OCT021983
09211991
02/29/2011

这些都属于可以接受的输入格式。标准化作业将验证这些格式是否有效,并为有效格式设置有效标记。随后,标准化作业将生成使用标准格式 CCYYMMDD 的输出;否则将设置无效原因代码。

第 1 步:创建并行作业

创建一个并行作业,如 图 38 中所示。将输入顺序文件阶段配置为读取包含上述示例记录的输入文件。

图 38. 具有顺序和标准化阶段的并行作业
展示具有顺序和标准化阶段的并行作业的图片
图 39. 输入顺序文件视图数据
展示输入顺序文件视图数据的图片

第 2 步:配置标准化阶段

  1. 创建一个新流程。
    图 40. 标准化阶段属性
    展示标准化阶段属性的图片
    图 41. 标准化新规则流程窗口
    展示标准化新规则流程窗口的图片
  2. 为 “Date” 列选择 VDATE 规则集(Standardization Rules > Other > VDATE),“Date” 列也是输入顺序文件元数据。
    图 42. 规则集选择
    展示规则集选择的图片
  3. 单击 > 按钮。
    图 43. 包含选中的规则集的 Standardize rule process 窗口
    展示包含选中的规则集的 Standardize rule process 窗口的图片
  4. 单击 OK
    图 44. 包含选中的规则集和列的 Standardize rule process 窗口
    展示包含选中的规则集和列的 Standardize rule process 窗口的图片
    图 45. 标准化阶段属性窗口及已创建的规则流程
    展示标准化阶段属性窗口及已创建的规则流程 的图片
  5. 映射输出列(Stage Properties > Output > Mapping
    标准化阶段将根据所选规则生成列。本例中选中了以下列: ValidFlag_VDATE、DateCCYYMMDD_VDATE、InvalidReason_VDATE 以及 “Date” 输入列。

    将上述列拖放到输出中。
    图 46. 标准化阶段输出列映射
    展示标准化阶段输出列映射的图片

第 3 步:配置输出文件并运行作业

配置输出顺序文件阶段,使之按需提供必要的字段,例如文件名和格式等其他设置。运行作业并验证输出。下图展示了所生成的输出:

图 47. 输出顺序文件视图数据
展示输出顺序文件视图数据的图片

OCT021983
有效日期(ValidFlag_VDATE)
19831002 是标准格式(DateCCYYMMDD_VDATE)

09211991
有效日期(ValidFlag_VDATE)
19910921 是标准格式(DateCCYYMMDD_VDATE)

02/29/2011
无效日期(ValidFlag_VDATE)
原因在于,它使用了无效的闰年日期(InvalidReason_VDATE)


结束语

在本教程中,您了解了什么是标准化流程,以及如何利用 InfoSphere QualityStage 实现此流程。此外,您还学习了使用不同类型的规则集来实现标准化,例如国家标识符、域的预处理程序、特定于域和验证等。


下载

描述名字大小
示例作业与数据SampleJobDesigns.zip10KB

参考资料

学习

获得产品和技术

讨论

条评论

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=775845
ArticleTitle=使用 InfoSphere QualityStage 标准化您的数据
publish-date=11212011