第一十二章 数据抽取、转换和加载

第一节 ETL的定义和总体架构

    ETL是数据抽取(Extract)、转换(Transform)、加载(Load)的简写,它贯穿了整个商业智能项目,是构建数据仓库最重要的一步。系统通过ETL过程将数据源中的数据经过转换和整合加载到数据仓库中。下面对ETL功能架构中的抽取、清洗、转换、加载等内容进行详细的介绍。

    (1)抽取

    抽取是源数据进入到数据仓库中的第一步。因为每个业务系统数据的质量各不相同,所以需要对每个数据源建立不同的抽取程序,而抽取的目的就是将这些数据源中的数据抽取出来,传递给下一阶段中的清洗步骤。

    抽取的主要功能如图12-1所示。

 抽取的主要功能

图12-1  抽取的主要功能

    1)提供数据适配器的功能:数据抽取的功能应该包含对数据适配器的支持,使得抽取程序可以与多种业务数据源相连接。一般来说,源数据适配器包含对JDBC、ODBC、XML等方式的支持,为两端的数据交换提供最基本的条件。

    2)提供标准化的功能:抽取最重要的一个功能就是对数据类型的标准化,将业务数据源和数据仓库中的数据类型统一。

    3)提供批处理的服务:主要负责抽取流程的启动、监控任务的执行、对批处理任务的重启恢复、自动调度抽取程序等。一般使用成熟的ETL工具去完成复杂的监控处理。

    4)提供过滤的功能:抽取程序可以根据实际的需要,为业务数据源提供过滤的功能,以保证数据的质量。

    (2)清洗

    清洗是源数据进入到数据仓库中的第二步。清洗的目的是保证源数据的数据质量符合数据仓库的要求,同时保证数据的一致性。清洗程序可以分成两类,如图12-2所示。当业务系统源数据的清洗规则和处理流程各不相同时,为了保证数据的一致性,可以对不同的业务源数据编写各自专用的清洗程序;当所有业务系统源数据的清洗规则和处理流程都相同时,可以编写通用的清洗程序,从而保证数据的质量和数据的一致性。当然,在编写通用清洗程序的时候,为了满足业务的需求,减少代码的重复,可以通过编写通用函数的方式去处理相同的清洗规则和处理流程,以达到提高系统效率、减少代码编写量的目的。

    清洗的主要功能如图12-3所示。

    1)数据修正功能:使用固定算法或者相应的数据源检查程序去验证信息是否准确。

    2)数据标准化功能:将业务数据源的数据标准化,以满足数据仓库中的数据一致的要求。

    3)匹配与合并功能:对抽取出来的数据进行重复验证,然后对重复数据进行单独合并。

 图12-2  清洗程序的分类

图12-2  清洗程序的分类

 图12-3  清洗的主要功能

图12-3  清洗的主要功能

    (3)转换

    转换是源数据进入到数据仓库中的第三步,也是最重要的一个步骤。转换在抽取和清洗的基础上对源系统所抽出的数据进行操作,是业务系统数据进入到数据仓库中的最后一次修改。

    转换的主要功能如图12-4所示。

    1)对数据进行计算:根据业务需求的特点对业务源数据进行相关的计算,以满足数据仓库的要求。

    2)对数据进行放大:根据实际的业务需求,为数据添加额外的信息,从而保证数据仓库的一致性和正确性。

    (4)加载

    加载是ETL过程中的最后一步。它主要负责将数据加载到目标表中,这些目标表可能是事实表,也可能是维度表。加载最重要的作用就是按照数据模型中各个实体之间的关系将抽取的数据加载到目标表中,使用代理键替换原来的主键或者外键(代理键一般是用在OLAP的星型模型中,通过添加一个序列作为该表的主键值,目的是防止修改源表信息后同时修改历史数据信息,加入代理键的作用就是当源表的某条记录被修改时,将修改记录加入到目标表中,它的主键永远不会重复,而是作为一条完整的、新的历史记录加载到目标表中),同时加载过程中也应该具有容错的能力,能够在出现错误的时候不影响其他程序的执行。生成代理键的过程如图12-5所示。

 图12-4  转换的主要功能

图12-4  转换的主要功能

 图12-5  生成代理键的过程

图12-5  生成代理键的过程

    (5)元数据管理

    元数据管理用于定义ETL流程中所涉及的所有环节,如图12-6所示。元数据按照用途可以分为技术元数据和业务元数据。技术元数据是存储数据仓库技术细节性的数据,是数据仓库开发和管理所使用的数据,主要包括数据仓库的模式、维度、层次的定义。业务元数据从业务角度去描述数据仓库的信息,是数据仓库开发人员和业务人员沟通的桥梁,主要包括企业概念模型和多维数据模型的结构和定义。元数据管理也是数据质量管理的关键。

图12-6  元数据管理

图12-6  元数据管理

    ETL的框架结构包含了业务数据源、ODS数据缓冲区、ODS统一信息视图区、数据仓库(DW)、数据集市(DM)等内容,如图12-7所示。

 图12-7  ETL的框架结构

图12-7  ETL的框架结构