快捷搜索:

IBM DB2 Universal Database 的 ETL 解决方案

简介

在有效地应用数据资料库之前,平日必要从很多半据源创建或者更新资料库。最常见的环境是,在外部系统上累积数据(供今后更新资料库应用),这些数据的款式也与资料库的要求有所不合。得到这些数据并将其转化成有用、同等、准确的数据的历程平日称为 ETL,此中的三个字母分手代表提取(Extraction)、转换(Transformation)和加载(Load)。

提取便是从源系统中获取数据(无论是何种款式)。这个历程可能很简单,只必要从数据库或者电子表格转储文本文件(flat file);也可能很繁杂,必要建立与外部系统的联系,然后节制数据到目标系统的传输。

转换平日不仅仅是数据款式的转换(虽然这是将数据导入系统的关键一步)。外部系统中的数据可能包孕不同等或者不精确的信息,这取决于外部系统上实施的反省和平衡。转换步骤的一部分是"净化"或"回绝"不相符前提的数据。这个阶段常用的技巧包括字符反省(回绝包孕字符的数值性数据)和范围反省(回绝越过可吸收范围的数据)。被回绝的记录平日寄放在零丁的文件中,然后应用更繁杂的对象处置惩罚,或者手工改正问题。然后将这些数据合并到已转换聚拢中。

加载阶段将获取并转换的数据寄放到新的数据存储中(数据仓库、数据集市等)。对付 DB2 UDB,该历程可以用 SQL 敕令(IMPORT)、对象(LOAD)或集成对象(Data Warehouse Manager 和 Information Integrator)来完成。别的,全部 ETL 历程也可应用第三方利用法度榜样来完成,这样做平日可以削减编程,或者不必要自己编程。

ETL 历程可能异常简单,只必要将一些数据从一个表通报到相同系统中的另一个表。也可能异常繁杂,必要从数千英里之外的完全不合的系统获取数据,然后从新安排和从新款式化,使其相符完全不合的系统。下面将描述完备的 ETL 到 DB2 UDB 的措施(但不必然没有漏掉)。只要有可能,我会供给有关该措施的具体信息的链接。

DB2 IMPORT

DB2 UDB 导入(IMPORT)对象应用 SQL INSERT 语句将输入文件中的数据写入表或者视图中。假如目标表或视图已经包孕这些数据,那么可以选择调换原本的数据或者将这些数据追加到原稀有据后面。

导入对象把输入文件中的数据插入表或者可更新的视图。假如接管到入数据的表或视图已经包孕数据,可以代替原本的数据或者追加。

导入数据必要以下信息:

输入文件的路径和名称。

目标表或者视图的名称或又名。

输入文件中的数据款式,这种款式可所以 IXF、WSF、DEL 或 ASC。

输入数据要插入表中,照样要插入视图中,要输入数据更新照样调换表或视图中的原稀有据。

假如经由过程利用法度榜样编程接口(API)aqluimpr 调用该对象,那么还必要一个信息文件名。

假如处置惩罚类型化的表,可能必要供给处置惩罚所有布局化类型的措施或顺序。从上到下、从左到右地处置惩罚上级表,按层次布局处置惩罚子表,这样的顺序称为遍历顺序。在表层次布局间移动数据时,这个顺序很紧张,由于它抉择了移动的数据相对付其他数据的位置。在处置惩罚类型化的表时,可能还必要供给子表清单。该清单指出将哪一个子表或者属性导入数据。

您还可以规定:

导入数据的措施:列位置、列名或相对列位置。

向表提交变动前插入的行数。按期哀求 COMMIT 会削减紧张操作中由于掉败或者呈现 ROLLBACK 所丧掉的行数。还可以防止由于处置惩罚的输入文件过大年夜而导致 DB2 日志被填满。

开始导入前要跳过的文件记录数。假如呈现差错,可以从成功导入并提交的着末一行后面从新开始导入操作。

要插入数据的表或视图的列名。

信息文件名。DB2 履行数据导出、导入、加载、绑定或规复操作时,可以指定一个信息文件,DB2 会创建该文件中包孕与这些操作有关的差错、警告和提示信息。应在 MESSAGES 参数中指定这些文件名。这些信息文件是标准的 ASCII 文本文件。信息文件中的每条信息都从一个新行开始,包孕 DB2 信息检索举措措施所供给的信息。可以应用操作系统供给的打印历程进行打印,并且可以应用任何 ASCII 编辑器进行查看。

图 2. DB2 LOAD 的履行阶段

加载阶段将数据写入表。加载历程中,数据被装载到表中,假如必要的话,还可以汇集索引键和表的统计信息。按照 LOAD 敕令中的 SAVECOUNT 参数指定的光阴距离来建立保存点(save point)或者同等性点(point of consistency)。保存点上天生信息,阐明当前已经成功加载了若干行。对付应用 FILE LINK CONTROL 定义的 DATALINK 列,可以对非空列值履行链接操作。假如操作掉败,可以从新启动加载操作,RESTART 选项自动从上一次成功的同等性点从新启动加载操作。TERMINATE 选项滚回掉败的加载操作。

构建阶段天生索引。在构建阶段,按照加载阶段汇集的索引键天生索引。加载历程中索引键被排序,并且网络了索引的统计信息(假如 INDEXES 选项指定了 STATISTICS YES)。这些统计信息与 RUNSTATS 敕令网络的信息类似。假如构建阶段掉败,RESTART 选项自动从适当的位置从新启动加载操作。

删除阶段将表中造成惟一键冲突或者 DATALINK 冲突的行删除。假如指定了非常表,则有惟一键冲突的行会被放在非常表中,关于被回绝行的信息被写入信息文件。加载历程停止后,还要查看这些信息,办理存在的问题,然后向表中插入精确的行。不要试图删除或改动加载对象创建的任何临时文件。某些临时文件对付删除阶段异常紧张。假如删除阶段掉败,RESTART 选项可以从适当的位置从新启动加载操作。提示:每个删除事故都记录到日志中,假如有大年夜量记录违反了惟一性前提,那么删除阶段中日志文件可能被填满。

索引复制阶段将索引数据从系统临时表空间复制到原始表空间。只有在加载操作中指定 READ ACCESS 选项,并为索引创建指定了系统临时表空间时,才会履行这个步骤。

分区加载的观点和术语

评论争论在分区数据库情况中加载对象的行径和操作时,要用到以下术语:

调整分区是用户连接并在其上履行加载操作的数据库分区。在 PARTITION_AND_LOAD、PARTITION_ONLY 和 ANALYZE 模式下,平日会假定命据文件在这个分区上,除非加载敕令中指定了 CLIENT 选项。指定加载敕令的 CLIENT 选项注解要加载的数据位于远程连接的客户机上。

在 PARTITION_AND_LOAD、PARTITION_ONLY 和 ANALYZE 模式下,预分区代理将读入用户数据,并以轮询的要领将这些数据分发给数据分区的分区代理。这些历程都是在调整分区上履行的。任何加载操作都只容许每个分区最多能有一个分区代理。

在 PARTITION_AND_LOAD、LOAD_ONLY 和 LOAD_ONLY_VERIFY_PART 模式下,加载代理在每个输出分区上运行并调整该分区上的数据加载。

PARTITION_ONLY 加载操作历程中,文件代理加载在每个输出分区上运行。它们从分区代理接管数据并写入所在分区的文件。

文件传输敕令代理在调整分区上运行,认真履行文件传输敕令。

图 4. 分区数据库加载大要图。预分区代理读入源数据,数据被近似地分成两半通报给两个分区代理,分区代理对数据进行分区,并将它们发送到三个数据库分区中的一个分区中。每个分区的加载代理加载数据。

在分区数据库情况中加载数据时,加载对象可以履行以下操作:

并行对输入数据分区。

在响应的数据库分区中同时加载数据。

从一个系统将数据传输到另一个系统。

分区数据库加载操作发生在两个阶段:建立阶段获取分区资本(如表锁),加载阶段将数据装入分区。可以应用 LOAD 敕令 ISOLATE_PART_ERRS 选项抉择这两个阶段呈现差错时该若何处置惩罚,一个或多个分区的差错对其他没有差错的分区的加载操作有什么影响。

图 6. 创建数据仓库的步骤

另一个 DB2 手册 BI Tutorial: Extended Lessons in Data Warehousing ,描述了其他历程,如下图所示。

图 7. 其他数据仓库步骤

在上面几节中,手工定义了 Library 数据仓库中的表,然后应用调用 IMPORT 或 LOAD 对象的脚本添补这些表。经由过程 Data Warehouse Center,这些义务可以用图形化的界面完成。下面几节将简要阐明若何使用 WDC 开拓和掩护 Library 数据仓库。有关的更多细节,请参阅上面提到的教程手册。

定义仓库安然性

数据仓库安然由仓库节制数据库来治理。一旦指定了该数据库,它就会保存仓库的元数据,此中包括用户和口令。是以,在造访 Data Warehouse Center (DWC) 之前,必须指定或创建一个仓库节制数据库,然后定义用户和组,并分配适当的权限。

创建仓库数据库

仓库将建立在一个名为 Library 的数据库中。DWC 经由过程 ODBC 与仓库数据库进行通信,是以必然要将仓库和节制数据注册为支持 ODBC 造访的数据库。

定义仓库源

Library 仓库的所有源数据都来自从 Excel 电子表格中提取的逗号分隔文件(拜见 附录 A 中的示例数据)。DWC 从这些文件导入数据之前,这些文件必须被定义成仓库源。支持的源类型有多种,这里选择本地文本文件作为每个表的源。定义所有的源之后,DWC Sources 将如下所示:

向历程中添加数据源和目标

DWC 支持用图像化的要领构建历程。由于要创建 9 个类似的历程,这里只评论争论开拓 Author 历程的步骤。其他历程的开拓都与此类似。

在 Processes 树中,双击 Build Author Dimension 项打开图形化界面,在这里可以规定源、目标、操作和数据路径。这项操作要用到三个图标:

图 13. 历程定义图标

首先选择 Sources and Targets 图标,然后再次单击盼望呈现的位置。从弹出的窗口的 Warehouse Sources 树上选择文件,对目标表(Author)重复这个历程。

在 Define Processes 图标中依次选择 DB2 UDB 、Load。

这就定义了一个 DB2 LOAD 历程,然后经由过程 Data Paths 将其连接到源表和目标表。选中 Data Paths 图标并选择 Data Link 弹出菜单,鼠标指针变成一个下箭头,单击 Source File,并将其拖动到 Load Process 中。然后重复这个操作,再将其从 Load Process 拖动到 Target Table 。保存历程前,必然要将 Properties 窗口中的 Load Mode 从 INSERT 改为 REPLACE。这样就可以按期更新数据,而不必要成批治理它们(由于数据量很少,可以每周从新加载一次,而不必履行递增更新)。

画面如下图所示:

图 14. 历程定义

测试仓库步骤

右击 Load Process,并将 Mode 从 Development 改为 Test。留意,历程和目标表上现在都呈现了一把锁。假如右击目标表哀求显示示例内容,就会看到一个空的窗口(由于还没有添补表)。

您可能还会对下面的文章感兴趣: