数据仓库ETL工具箱——抽取(一)
源数据抽取是数据流主线的第一步,在数据抽取时应抽取什么样的数据、利用什么工具抽取、抽取的指标是什么、抽取的数据如何交给下游等将在本篇详细说明。
逻辑数据映射的设计
在物理设计之前必须进行ETL的逻辑映射来确保无法跟踪数据的情况产生,逻辑数据映射的设计包括一下几方面:
- 有一个逻辑数据映射的规划
- 确定候选的数据源
- 使用数据评估工具来分析源系统
- 接收数据线和业务规则的遍历
- 充分理解数据仓库的数据模型
- 验证计算和公式的有效性
逻辑数据的映射文档通常用EXCEL或者一张关系型表来表示,其中的内容包括:
- 目标表名称
- 表类型
- 源数据库
- 源表名称
- 源列名称
- 转换
其中目标表名称包括数据仓库中出现的物理表名称;目标列的名称;数据仓库表中列的名称
表的类型则是判断这个表是事实表还是维表(或者子维表)
源数据库包括源数据库的连接串,若源数据类型是文件,则需记录文件的名称及路径
源表和源列名称指的是生成目标表时所设计到的所有表和列
转换则是记录从源表到目标表的详细操作,通常使用SQL或者伪代码的形式
下图为书中所给出的逻辑映射表:
ETL工具应该对隐含数据转换进行明确的处理。ETL工具通常持续的跟踪这些隐含的数据转换并提供报告来标识任何类型的转换。
表类型的数据加载次序应该是先加载维表 ,然后是事实表。
源系统分析通常分为两个阶段:数据发现阶段、异常检测阶段。数据发现阶段是指一旦确定了目标需要做成什么样子就要确认和检查数据源。应仔细评估每一个元素,确定每一个元素适当的源或者记录系统。对源系统要做到:
- 收集和文档化源系统
- 保持跟踪源系统
- 确定记录系统
源系统通常由各种文档组成,包括记录、报表以及逻辑数据映射。ETL小组必须了解使用数据的所有用户并找出每一个用户组的数据源。一旦数据源被确定就要说明这些系统的意义以及谁对他们负责。源系统跟踪报告也可以作为数据仓库的后期阶段的概要。
此外,越靠近源系统,我们获取的数据价值越高,从源系统的ER图中我们可以获得如下特性:
- 唯一标识和自然键
- 数据类型
- 表之间的关系
- 离散关系
- 关联和列的基数
- NULL值
- 非日期字段中的日期
为了追溯血缘关系,书中建议从关系型数据库中导出数据时使用外连接来保证远程系统参考的完整性,并在ETL过程中收集业务规则。
集成异构数据源
当一个维度是由来自几个独立系统的数据组成时,很重要的一点是把这些系统中的每一个唯一标识包含到数据仓库的目标维度中 去。标识必须是用户可见的,确保他们能理解这个维度与数据的对应关系,这样才可以回溯到交易系统。项目最后应提供跨业务主题域的、完全不同的维度,可以通过以下技巧从一个完全不同的数据源系统环境加载规范化的维度:
- 标识源系统
- 理解源系统(数据评估)
- 创建记录匹配逻辑
- 建立生存规则
- 建立非键属性的业务规则
- 加载一致的维度
由于现在去IOE做的很彻底,我们这里就不介绍主机系统的抽取(IBM小机等)。下一篇我们将详细介绍ETL中不同数据类型的抽取。