ETL(Data Extract,Transform,Load)-数据抽取,转换和加载

ETL简介

ETL即数据抽取、转换和加载,是数据仓库实现过程中,将数据由数据源系统向数据仓库加载的主要过程(数据仓库之前的数据处理过程)。
数据抽取:从数据源系统抽取数据仓库需要的数据;
数据转换:将从数据源获取的数据转换按数据仓库要求的形式,对数据进行转换;
数据加载:将数据装入数据仓库。

数据抽取

数据抽取接口

典型的数据抽取接口包括数据库接口和文件接口,对于不同数据平台、不同源数据形式、不同性能要求和业务量的业务系统以及不同数据量的源数据,采取不同的数据抽取接口。在数据抽取时,重点考虑数据抽取的效率,以及对现有业务系统性能及安全的影响。源数据具有如下特点:
数据量特别大
业务系统工作负荷重
业务系统性能、实时性的要求较高
基于以上特点,一般采用专用数据库驱动接口,必要时采用API接口编程实现数据的抽取,以提高数据抽取效率同时减少对业务系统的性能的影响。

数据抽取策略

满足经营分析系统的需要,又能保证不影响业务系统的性能,所以进行数据抽取时应制定相应的策略,包括抽取方式、抽取时机和抽取周期等内容。
抽取方式:增量抽取、完全抽取和两者组合抽取
抽取时机:避开业务系统的高峰时段,可选择在夜间业务系统比较闲时进行。
抽取周期:对不同类型的数据源,应综合考虑业务需求和系统代价,指定合理的抽取周期

抽取策略必须充分考虑以下因素:
满足对不同来源的抽取处理。数据源包括业务系统、企业外部数据源,人工输入数据源等。
支持多种不同系统平台和数据类型的数据抽取。包括各种关系型数据库系统、各种文件方式的源数据等。
充分考虑数据源系统的性能要求。根究业务量大小和数据量大小,尽量减少对数据源系统的影响。
通常情况下,流水型增长且数据量大的数据适合采用增量抽取的方式,最为典型的是清单、账单类数据;变化更新的数据适合采用完全抽取方式,最为典型的是反映当前状态的资源配置类数据;对于两者结合的数据,如果能提取增量信息,则进行增量抽取,否则采用完全抽取的方式进行,最为典型的是客户资料变更数据或其他的客户服务记录数据。此外,对于抽取周期要考虑实际业务的需求和抽取进行的系统代价,在可能的情况下,尽量缩短抽取周期。

数据转换

是指对从业务系统中抽取的源数据根据数据仓库系统模型的要求,进行数据的转换、清洗、拆分、汇总等处理,保证来自不同系统、不同格式的数据的一致性和完整性,并按要求装入数据仓库。

数据转换的主要作用

数据转换主要完成因以下原因导致的数据不一致问题。

  1. 源数据系统和数据仓库系统在模型上的差异性
  2. 各源数据系统平台不一致:数据仓库系统的数据源可能包括基于不同平台的数据库的数据,可能会存在大量的转码工作;
  3. 源数据结构的不一致:有些数据源由于历史的原因,导致同一个表在不同的时期数据结构不一致;
  4. 源数据定义不规范导致错误数据;
  5. 对数据的约束不严格,导致无意义数据;
  6. 存在重复记录

数据转换技术和策略

  1. 在抽取过程中进行数据处理;
  2. 使用异步数据加载,以文件的方式处理;
  3. 在数据加载中进行数据处理;
  4. 进入数据仓库以后再进行数据处理。
    注意点:
  • 采用在数据抽取中进行转换,则必须考虑抽取的性能及对业务系统性能的影响;
  • 采用异步数据加载需要以文件方式处理时,则必须充分考虑中间磁盘的存储量(缓存等)以及ETL整个流程的协调性工作(因为是异步的,所以对数据的同步需要更深入的考虑),以及大量的非SQL语句的编程;
  • 采用在数据加载过程中进行数据转换时,必须考虑加载性能
  • 采用先将数据装载到数据仓库后再处理时,则必须考虑数据仓库引擎的海量数据处理能力

数据加载

数据加载的主要功能

数据加载就是将从源数据系统中抽取、转换后的数据加载到数据仓库系统中。要求数据加载工具必须具有高效的加载性能

数据加载技术及策略

加载技术:

  • 数据仓库引擎厂商提供的数据加载工具进行数据加载;
  • 通过数据仓库引擎厂商提供的API编程进行数据加载;

加载策略:
数据加载策略要考虑加载周期及数据追加策略两方面的内容。
数据加载周期要综合考虑业务分析需求和系统加载的代价,对不同业务系统的数据采用不同的加载周期,但必须保持同一时间业务数据的完整性
数据追加策略根据数据的抽取策略以及业务规则确定,一般包含三种策略:直接追加(直接增加数据)、全部覆盖、更新追加(更新状态)。

追求梦想,做最好的自己