灵活有效的数据仓库解决方案,第3部分:设计并实现仓库ETL过程
2010-05-14 15:00:27 来源:WEB开发网DB2 复制错误记录
如果您有麻烦,则可以在日志记录目录(通常为 C:Program FilesIBMSQLLIBLOGGING)中找到日志文件的默认位置。对于 capture 程序的错误,可以检查文件 DB2.<source db name>.<replication schema name>.CAP.log。(例如:DB2.DSACCT.ASN.CAP.log)
名为 <ApplyName>.trc 的文件通常为 Apply 相关的错误提供良好的错误处理信息。
文件 DB2.<target db name>.<Apply name>.APP.log 还包含一些与 Apply 相关的信息。(例如:DB2.STAGEDB.APPLYPROD.APP.log)
数据验证
在项目的业务数据分析阶段,您产生了一组数据质量假设。这些假设将指定客户和解决方案提供者双方在数据质量问题上的职责。解决方案提供者通常关心数据清理和增强问题。客户至少要关注仅仅可以在数据源本身中解决的问题,以及与解释数据含义相关的数据质量问题。例如:
丢失的数据恢复。
模糊的数据转换。
业务操作应用程序相关的数据问题 —— 只能从应用程序本身解决的数据质量问题。
您应该在项目合同文档中包含数据质量假设,因为如果没有用正确的方法及时解决业务数据的质量问题,它可能严重影响项目时间表。数据质量假设可能是与客户进行时间表协商的一个好基础。
即使假设客户将承担其责任,解决他们业务数据源中的数据质量问题,将来仍然可能在业务数据源中产生质量较差的数据。在那些数据对后面的 ETL 过程产生负面影响之前,实现数据验证 ETL 筛选器模块来拒绝它们就显得十分重要。数据验证包含许多检查,其中包括:
属性的有效值(域检查)。
属性在剩余行的环境中是有效的。
属性在该表或其他表中相关行的环境中是有效的。
关系在该表和其他表中的行间是有效的(外键检查)。
这并非是一个详尽的列表。它仅仅强调了数据验证的一些基本概念。
错误处理是一个确定如何处理不尽人意的(less-than-perfect)数据的过程。可以暂时拒绝这些数据,将数据存储起来以便在固定领域中对它们进行修正,或者将其缺点传递给数据仓库。所拒绝的数据将存储在客户可以访问的位置;请确保每次发生数据的拒绝时,都会通知您的客户。应该允许稍后将已修理的遭拒绝的业务数据移至数据仓库中。
DB2 Data Warehouse Center 中的 Clean Data 转换器可以用于基本的数据验证目的。您还可以构建自己的数据验证 SQL 步骤或特殊的数据验证步骤来进行复杂的数据验证。
数据清理
数据清理是清理有效数据,使之更精确更有意义的过程。数据清理包括下列等任务:
从数据源的数据合并。
域转换和同步。
数据类型和格式的转换。
用于不同目标表的数据分离(Data splitting)。
数据合并的一个常见例子就是姓名和地址信息。客户的姓名和地址信息通常存储在多个位置上。经过一段时间,这些信息可能就不同步了。为客户合并数据通常比较困难,因为用于匹配不同客户映像的数据不再匹配。数据增强将重新同步这些数据。
您可以使用 DB2 Warehouse Center 中的 Clean Data 转换器来执行源数据上的基本清理、替换和映射操作。Clean Data 转换器操作源表中步骤所访问的特定数据列。然后,转换器在您的步骤所写入的目标表中插入新的行。根据您所选择的处理选项,将无法清理的数据写入目标错误表中。在将数据作为过程中一部分进行装入或导入之后,您还可以使用 Clean Data 转换器来清理和标准化数据值。
Clean Data 转换器提供了下列可供指定的清理类型:
Find and replace:在规则表的 Find 列中定位所选择的源列值,然后在目标表中用规则表中相应的替换值替换该值。规则表是这种清理类型所必需的。规则表指定 Clean Data 转换在查找和替换过程中将使用的值。
Numeric™ clip:缩短超出了指定范围的数字输入值。范围内的输入值将不加修改的写入输出。范围之外的输入值将由下界替换值或上界替换值进行替换。规则表是这种清理类型所必需的。
Discretize into ranges:基于规则表中的范围执行输入值的离散化(discretization)。规则表是这种清理类型所必需的。如果允许该清理类型为空(null),则必须在规则表的 Bound 列中放入 null 值。
Carry over with null handling:指定输入表中要复制到输出表中的列。您可以从输入表中选择多个列移至输出表中。规则表不是这种清理类型所必需的。这种清理类型允许您用指定的值替换空(null)值。您还可以拒绝 null,并将所拒绝的行写入错误表中。
Convert case:将源列中的字符从大写转换成小写,或从小写转换成大写,并将其插入目标列中。默认情况下,将源列中的字符转换成大写。规则表不是这种清理类型所必需的。
Encode invalid values:用指定的值替换没有包含在您所使用的规则表的有效值列中的所有值。您要在 Clean Data 转换器的 Properties 记事本中指定替换值,并且必须指定与源列数据类型相同的替换值。例如,如果源列是数字类型的,则必须指定一个数字型的替换值。有效值在写入目标表时不会发生改变。规则表是这种清理类型所必需的。
大多数清理类型都有一个 Matching Options 窗口,用于指定希望用来处理匹配的方式。
更多精彩
赞助商链接