UML软件工程组织
北京火龙果软件工程技术中心

使用 Oracle Warehouse Builder 10g 第 2 版进行数据归档和自动清理

 

作者:Mark Rittman   出处:网络

 

大多数机构构建一个数据仓库以提供一个集成的、可靠的和一致的统一视图。数据通常源于多个系统,需要经过提取、清理和集成,然后才能供用户进行查询。

但是,载入数据仓库的数据的质量经常是变化不定的,因此,以前归档源数据的过程是一个非常耗时间的手动过程,它需要大量的 SQL*Plus 经验或者购买昂贵的第三方工具。

但是,在 Oracle Warehouse Builder 10g 第 2 版 中,归档数据的功能已内置到该工具中,无需 SQL*Plus 经验。此外,使用 Oracle Warehouse Builder 构建的数据归档可用于生成数据的自动更正。在本文中,您将了解这一重要的新特性的所有细微差别。

Oracle Warehouse Builder 内的数据归档和更正
 只有在您对数据的可靠性感到自信时,才能将数据仓库内的数据转换为可执行的信息。当您将数据放入数据仓库时,您需要首先了解数据的结构和含义,然后评估数据的质量以及数据需要清理和转换到的程度。知道了需要采取的措施之后,您需要对数据进行所需的更正,删除和更正可能在以后的加载中出现的所有其他错误。为此,Oracle Warehouse Builder 10g 第 2 版包括了三个使该过程简单直接的新特性:

  1. Graphical Data Profiler—使您可以了解数据的结构、语义、内容和异常,并导出以后将在您的数据仓库中使用的数据规则
  2. Correction Wizard—获取数据规则并将它们应用于您的数据,自动生成更正映射以清理和转换数据
  3. Data Auditor—获取数据规则并监视后续数据加载的质量

除了不需要复杂的 SQL*Plus 脚本或第三方工具外,在 Oracle Warehouse Builder 内进行数据归档和更正还有很多其他优势。生成的关于数据质量的元数据与其他元数据一同存储在设计信息库中。此外,用于更正数据的映射是常规的 Oracle Warehouse Builder 映射,可通过所有其他 ETL(提取、转换和加载)过程进行监视和管理。在 Oracle Warehouse Builder 内对数据进行清理和归档意味着您只需了解一个简单的工具,此外,通过将该过程与其他 ETL 工作集成,您可以确保数据质量和数据清理成为数据仓库构建过程的不可分割的一部分,而不是事后想法。

如果您没有使用过 Oracle Warehouse Builder 或者使用过该工具的较早版本,您应该注意,包装和许可在该最新版本中已经更改。以后,Oracle Warehouse Builder 的“核心 ETL”特性(相当于该工具的较早版本以前提供的功能)将作为数据库许可证的一部分免费提供。支持企业中部署的其他功能现在通过 Oracle 数据库企业版的选项提供。要利用本文中描述的功能,您将需要获得 Oracle 数据库 10g 的 Warehouse Builder 数据质量选项的许可证。(有关详细信息,请参考关于 OTN 的文档“Oracle 数据库许可信息”。)

为说明您怎样才能使用 Oracle Warehouse Builder 10g 第 2 版归档、更正和审计数据,我们将考虑以下情况:您的数据仓库需要归档和清理某些产品数据。

归档和清理产品数据
 在本示例中,您将使用 Oracle Warehouse Builder 10g 第 2 版归档和更正关于您公司提供的产品的数据。您将使用 Oracle Warehouse Builder 内的数据归档特性来确定数据的结构和特征,自动导出将应用于您的数据的一组数据规则。使用这些数据规则,您将自动生成一系列数据更正,这些更正将利用您的源表并从中创建一个更正表。

您希望归档的数据包含在名为 PRODUCT 表中。其定义如下:

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Nov 11 15:52:17 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> desc products
Name                  Null?         Type       
----------------------------------------- -------- ----------------------------
PROD_ID                           NUMBER
PROD_NAME                         VARCHAR2(50)
PACK_COUNT                          VARCHAR2(10)
AVAILABLE_DATE                        DATE
MARKET_SEGMENT                         VARCHAR2(50)
MANUF_COUNTRY                        VARCHAR2(50)
REORDER_YN                           VARCHAR2(1)

 您可以使用示例代码下载中提供的 Oracle 导出文件安装示例数据。要导出数据,创建将包含数据(例如 PRODUCT_CATALOG)的用户,授予您的一般权限,然后导入数据,如下所示:

Imp product_catalog/password@connect_string
file=product_catalog.dmp fromuser=product_catalog
touser=product_catalog

 使用 Oracle Warehouse Builder,您可以在表中查看数据。


 注意数据的一些细微差别。例如,一个细分市场拼错了。此外,一个生产国家也错误地列为“England”而非“UK”。此时,您可以决定使用 Oracle Warehouse Builder 10g 第 2 版来归档和更正数据。

创建数据归档
 使用 Oracle Warehouse Builder 创建一个项目并导入了 PRODUCT 表的元数据后,您应该右键单击 Project Explorer 中的 Data Profiles 节点,然后选择 New… 启动数据归档器向导。当使用该向导选择要归档的 PRODUCT 表并提交了归档作业进行异步处理后,将显示数据归档编辑器,如下所示。注意,如果这是您创建的第一个数据归档,Oracle Warehouse Builder 将提示您创建一个归档模块来保留结果,如果您希望将结果存储到将归档的数据之外的地方,则可以指定数据库用户和表空间。

数据归档编辑器有很多面板。这些面板显示已归档的对象和归档的结果。

在数据归档编辑器的左侧是一些面板,显示在该练习期间已归档的表、视图、物化视图、外部表、维度和事实等对象以及已经创建的任何更正模块的详细信息。下面的归档对象和更正模块的列表是与数据归档关联的属性的列表。使用该属性列表,您可以优化数据归档的参数;启用或禁用某些数据归档组件并启用选定表的数据规则归档。在该组面板的底部是监视器面板。该面板显示已提交的所有归档作业的进度。由于有时数据归档需要一段时间才能完成,因此您可以提交在后台完成的作业,同时执行其他 Oracle Warehouse Builder 任务;当作业完成时,Oracle Warehouse Builder 将向您发出警报。

数据归档编辑器的右侧是一组显示数据归档的结果的面板。顶部面板包含 Profile Results Canvas 和大量包含归档结果汇总的选项卡。

Data Type 选项卡详细说明对象中每列的文档和主要数据类型以及它们的最小和最大长度。

Unique Key 选项卡显示检测到唯一键或主键的所有列。该选项卡还显示唯一值的数量多得足以建议删除或更正非唯一行时可以定义唯一键的列。注意每列的 Six Sigma 分数。该分数是一个 1 到 7 之间的数字,它指明“每千个的缺陷”数量,即对象中未能通过唯一约束的行。

Profile Object 选项卡允许您查询归档对象内的记录,并可替代 SQL*Plus 来查看对象内的数据,可以选择使用 Where Clause、Execute Query 和 Get More 按钮来优化查询。

Domain 选项卡为归档对象的每列显示建议的域,以及数据与该域的一致程度。域定义为列的一组允许的值,Oracle Warehouse Builder 将在域内包含出现超过两次的所有列值。


 为特定列定义了域后,您可以使用它来导出将应用于您的数据的数据规则。Oracle Warehouse Builder 然后将该数据规则作为校验约束在列上实现,强制在数据库级别实施数据规则以确保从未违反该规则。对于存在的值可能会违反数据规则的列,您可以使用 Oracle Warehouse Builder 自动更正数据。

创建数据更正
 为您的产品表检查数据归档时,您将注意到 Oracle Warehouse Builder 已经为包含 Canada、USA 和 UK 的 MANUF_COUNTRY 列建议了一个域。这些国家已包含在建议的域中,因为它们在您的数据集中出现了多次。England 和 Mexico 未包含在内,因为它们仅出现一次。

对您的业务用户来说,您知道事实上该列的域应该为 Not Known、Canada、USA、UK 和 Mexico,即使 Mexico 仅出现一次;但是每一次 England 都应实际更改为 UK。因此,您要做的是使用 Oracle Warehouse Builder 更正该传入的源数据,对数据仓库的表副本进行约束以强制执行该域。

该过程的第一步是使用建议的域结果下面的 Derive Data Rule 按钮调用向导。该向导指导您逐步查看建议的域、进行修订以及创建数据规则。在您的实例中,您首先将“Mexico”值移动到 Selected values 列表中,然后在列表底部键入“Not Known”。

现在,您已经创建了数据规则,第二步是创建更正。当您创建更正后,Oracle Warehouse Builder 将首先要求您选择一个现有的目标模块,或者创建一个新模块以包含对象的更正版本。默认情况下,其定义将与原始的对象相同,额外显示的新的数据规则(作为校验约束或唯一键)除外。

指定目标模块之后,该过程的下一步是选择将用于创建更正的数据规则(参见下面内容)。在您的实例中,您将使用前面定义的数据规则以及已经定义的其他两个规则,一个规则用于排除 REORDER_YN 值为“N”的所有记录,另一个确保 MARKET_SEGMENT 表的所有值为“Economy”或“Executive”。

已经选择了数据更正要基于的规则,现在您应该指定更正的操作和清理策略。

指定操作时,您可以使用以下选项

  • Ignore—不采取任何操作
  • Report—在表的 ERR$$$ 列中记录违反数据规则的实例
  • Cleanse—应用数据清理策略来更正违反数据规则的数据

对于已在其中选择清理数据的列,您可以选择以下四个清理策略之一:

  • Remove—将未通过该数据规则的行排除在更正对象之外。我们将对违反 REORDER_YN = “Y”规则的行使用该规则。
  • Similarity Match—使用 Oracle Warehouse Builder 内置的 Match-Merge 功能将不正确的值更改为列域内与其最相似的值。
  • Soundex Match—使用 SOUNDEX 功能将不正确的值更改为域内与其发音最接近的值;您将使用该策略清理
  • MARKET_SEGMENT 列。
  • Custom—在清理列的逻辑更复杂、包含其他 PL/SQL 函数、使用条件逻辑或者需要创建自定义 PL/SQL 函数时使用。您将使用该策略清理 MANUF_COUNTRY 列。

当您完成清理操作和策略的选择后,该向导将根据您的指定在目标模块内创建一个映射以实现更正。

当您返回 Design Center 时,您将看到将包含您的更正数据的新的目标模块。在该模块内,您将看到保留您的更正数据的表定义以及实现数据更正的映射和转换。

如果您查看实现更正的映射,您注意到映射首先从原始的 PRODUCT 表中读取数据,然后尝试将数据载入应用了数据规则的表的阶段副本。
 
 然后,将通过时间规则的行复制到更正表中。然后,未通过任何规则的行通过“可插入映射”进行处理:这是 Oracle Warehouse Builder 10g 第 2 版的新特性,它允许您利用一系列映射步骤并将它们“插入”其他映射中。然后,您可以查看可插入映射的内容,了解其实现方式 — 虽然现在修改该更正的唯一方法是删除更正然后再重新生成。

返回 Project Explorer,您将注意到更正向导已经为您创建了两个转换:(1) CUS_MANUF_COUNTRY 函数,它是一个“shell” PL/SQL 函数,将保留您的自定义清理逻辑 (2) SIM_MARKET_SEGMENT 函数,更正向导会自动实现该函数。

要添加将实现您的自定义清理操作的程序逻辑,双击 CUS_MANUF_COUNTRY 函数并添加所需的逻辑:


 最后,要测试数据更正,您应该通过 Control Center 部署更正对象、转换和映射,然后运行更正映射。

现在,您可以查看已更正的 PRODUCT 表的内容,验证结果是否与您预期的一样。
 
 您会注意到所有 MARKET_SEGMENTS 现在都为“Executive”或“Economy”,REORDER_YN 为“N”的一行已删除,作为 MANUF_COUNTRY 实例的“England”已改为“UK”。

如果您对使用 Oracle Warehouse Builder 创建的更正正常工作感到满意,最后可以在 Oracle Warehouse Builder 内设置一个 Data Auditor 来监视以后传入的数据的质量。

Data Auditor 是一个过程,可以在特定基础上运行,也可以包含过程流中的映射、子过程和转换,然后在预定义的基础上按计划执行。Data Auditor 使用您导出或手动定义的数据规则,可以提供关于您的数据的一致程度的统计报告,然后将其存储在设计和错误记录表中。还可以对 Data Auditor 进行编程,指定 Data Auditor 在分数低于一定的阈值后向您发出通知,然后在您的允许下运行清理映射来清理数据。运行该清理映射后,可以对 Data Auditor 进行编程,使其仅在设计分数高于特定级别或 Six Sigma 分数时才继续进行剩下的 ETL 过程,避免将错误数据载入数据仓库而需要在以后进行删除。

结论
 Oracle Warehouse Builder 代表在您的数据仓库内归档、更正数据然后监视数据质量的过程的步骤更改。Oracle Warehouse Builder 中的图形数据归档特性提供了一种简单易用的工具。该功能允许您查看数据的结构、意义和质量,而更正向导提供了一种利用归档结果自动生成映射以更正数据的方法。已使用 Data Profiler 评估数据的质量之后,您可以使用生成的数据规则创建 Data Auditor,从而允许您定期监视进入数据仓库的新数据的质量。

 


版权所有:UML软件工程组织