数据抽取(ETL)基础
商业智能技术培训
——数据抽取(ETL)基础
广州菲奈特软件有限公司 第 1 页 共 6 页
目 录
数据抽取(ETL)基础
1 数据抽取基本概念...................................................................................................................3
2
ETL中的几个重要问题 ...........................................................................................................3
3 数据的迁移...............................................................................................................................4
4 数据的增量...............................................................................................................................5
广州菲奈特软件有限公司 第 2 页 共 6 页
1 数据抽取基本概念
数据抽取(ETL)基础
数据抽取又成为 ETL(data extraction, transformation and loading),是对数据进行抽取、
清洗、转换和整合的过程,是数据进入数据仓库的入口。通过 ETL 的过程,数据从联机事
务处理系统、外部数据源、脱机的数据存储介质中导入到数据仓库。也就是说,数据抽取是
数据进入数据仓库的入口。
从数据仓库的特点来看,数据仓库中的数据主要用于支持分析决策,是面向主题的、集
成的、稳定的历史数据,所以数据并不要求与业务系统中的数据一样,具有较高的实时性。
同时,由于数据仓库中数据的组织主要是面向分析主题的星型模型结构,同时有时整个企业
中众多数据资源的集中,所以必须对原有的业务数据进行清洗、转换和再次组织和装载。也
正是由于以上原因,数据抽取一般是定时进行,多个抽取操作的执行时间、执行顺序、执行
结果都必须经过仔细斟酌,数据抽取的成功与否对数据仓库中信息是否能够得到有效利用有
着至关重要的影响。
数据抽取在技术上主要涉及互连、复制、增量、转换、调度、监控以及数据安全性等方
面。
2 ETL 中的几个重要问题
在 ETL 阶段,有几个重要的问题是非常值得注意的:
一. 数据的有效性检查
为避免数据冗余,要认识到数据装入数据仓库之前,应该对数据进行有效性检查,这是
很重要的。如果没有进行数据的有效性检查,就有可能破坏依赖于数据仓库的商务分析的完
整性,帮助检查数据的有效性的最好方法是源系统专家。源系统专家包括具有技术专业知识
和非技术知识的人士。
二. 数据的清洗和转换
由于数据抽取中的数据是来源于业务系统中的业务数据,难免会存在各种原因所导致的
脏数据,例如数据不在给定的界限之内或对于实际业务来说毫无意义的数据。这些数据就是
数据清洗的对象。清除数据包括对那些在给定范围之外的数据采取纠正和舍去等措施。
同样,由于数据仓库中的数据来自于多种业务数据源,这些数据源可能是在不同的硬件
平台上,使用不同的操作系统的,又或者是属于不同的业务系统。因而这些数据的存储格式
各不相同,或者相同的数据具有不同业务含义。而数据的转换正是为了解决这一问题而必须
进行的数据抽取步骤。
三. 数据的聚合与分割
粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒
度级就越小;相反,细化程度越低,粒度级就越大。粒度是对数据仓库中的数据的综合程度
高低的一个度量,它既影响数据仓库中的数据量的多少,也影响数据仓库所能回答询问的种
类。
广州菲奈特软件有限公司 第 3 页 共 6 页
数据抽取(ETL)基础
由于数据仓库中数据的来源是不同的业务系统数据,而各个系统对数据存储的粒度各不
相同。而数据仓库中同一分析主题中数据的粒度必须是统一的,所以,为了保证数据粒度的
一致性,必须对原有数据进行聚合(汇总)或分割(细化)。
四. 数据安全性
在数据抽取中还会涉及的一个重要问题就是数据的安全性。数据的抽取必非一个完全的
技术问题,往往牵涉整个企业中各个不同部门中数据的共享。那么数据共享中的权限等安全
问题也就是数据抽取中必须要认真对待的问题。如何保证数据抽取中和数据集中后的限制与
共享往往需要业务人员的配合和介入,不能将该问题当作单纯的技术问题来对待,而必须进
行周密的考虑和计划。
3 数据的迁移
在数据迁移的过程中,通常根据实际应用的不同数据转换的复杂性是不尽相同的。大多
数传统的数据存储方法缺乏标准,因而也增加了数据迁移的难度,要处理许多复杂的问题,
如取舍数据、统一数据编码标准、清洗转换数据等。对于这些问题可以根据其不同的特点和
处理方式进行一些分类:
一. 简单变换
顾名思义,它是数据变换中最简单的形式,这些变换一次改变一个数据属性而不考虑该
属性的背景或与它相关的其他信息。数据类型转换最常见的简单变换是转换一个数据元的类
型。当现有应用程序存储某个类型的数据只在该应用程序的背景下有意义,在企业水平上却
没有意义时,就常常要求进行这类变换。
这类转换可以通过编码程序中的简单程序逻辑完成,或者运用数据仓库数据变换工具完
成,例如日期/时间格式的转换。因为大多数业务环境都有许多不同的日期和时间类型,所
以几乎每个数据仓库的实现都必须将日期和时间变换成标准的仓库格式。这可以通过手工程
序编码来完成。它能把一个日期或时间字段拆成几个子部分,然后再将它们拼成想要的字段。
然而市场上的大多数数据变换工具只提供了日期和时间格式之间迅速进行简单转换的设施,
而手工编码上下的功夫要少得多。
二. 字段解码
简单地说,数据一般不应该以编码的格式放在数据仓库中。我们在业务数据库中建立
代码是为了节省数据库存储空间。虽然人不理解这些代码,但这并不是大问题,因为我们与
那些代码的交互作用是由应用程序管理的。这些程序在必要的时候会成为我们破解那些值的
代码。在数据仓库环境中,情况就大不一样了。因为用户可能来自公司的任何部门,所以仓
库的所有用户不可能都有足够的背景知识和培训,使他们能够理解在业务数据库中使用的编
码值。因此,业务系统和外部数据中的编码值在存入数据仓库之前,应该转换为经过解码的、
易于理解的相应值。
即便在数据仓库中由于特殊需要必须保留编码,由于数据来源复杂,可能在不同的业
务系统中相同的业务含义定义了不同的编码,那么统一编码也是必要的。
一方面,必须把编码值充分扩展,使它能够为最大多数的用户理解,并且具有充分的
可扩展性;另一方面,把一个值扩展得太多要占用额外的存储空间,而且把该值当作查询中
的检索标准也很困难。所以在进行解码的时候必须本着易于理解、有足够的扩展性和转换的
广州菲奈特软件有限公司 第 4 页 共 6 页
可操作性等原则来进行。
数据抽取(ETL)基础
从技术角度看,字段解码是个非常易于实现的过程,它可以很容易地结合到变换程序中
去,也可以在数据转换工具中轻松地完成,然而,确定应该进行多少解码工作是很难的。但
一个好的解决方法往往提供了足够的解码,这样即使普遍用户也可以理解字段值的含义,并
且可以用全面理解数据含义。
三. 数据清洗
数据清洗指的是比简单变换更复杂的一种数据变换。在这种变换中,即要检查数据是否
符合存储的格式,同时还要检查数据在相应业务中是否符合该项业务逻辑。这可以通过范围
检验、枚举清单和相关业务逻辑检验来完成。
范围检验是数据清洗中比较简单方式,它是指检验一个字段中的数据是否落在预期范围
之内,一般如日期范围、年龄范围或地区范围等。
枚举清单相对来说业务比较容易实现的。这种方法是对照数据字段可接受值的清单,以
确定检验字段是否需要处理。
相关业务逻辑检验就比较复杂,因为它将会涉及到实际的业务逻辑,需要有业务经验的
人员参与才会有比较好的效果。
另外,在相关业务逻辑检验中还有一个比较重要的概念,就是取舍数据。对于数据的集
中有一个原则,就是必须保证数据的有效性。而业务数据库中往往存在冗余的数据或因为各
种原因导致的无效数据,如果不能将这些数据剔除在外,将会直接影响最后分析结果的准确
性。所以当实在无法对一些数据进行清洗的时候,必须斟酌将这些数据丢弃。
当然,数据清洗时往往不可能将以上几种类型明确区分开,对数据的清洗往往是这些不
同方法的结合。
4 数据的增量
在数据抽取中除了首次对全部历史数据的抽取之外,随着时间的流逝,数据仓库也要对
新的业务数据进行追加。如何定期向数据仓库追加数据成为数据抽取的另一关键问题。在进
行数据增量抽取时,一般采用一次设计,此后定期调度的方法完成。而数据增量抽取的自动
化程度往往由源数据的组织形式,增量抽取的方法以及业务逻辑等共同决定,常用的增量抽
取方法有:
一. 时间戳
如果在原始数据中含有时标,对新插入或更新的数据有标记或是数据在更新时有时间
戳,那么只需根据时标进行判断即可。但并非所有的数据源中都会含有时标设计。
二. 增量文件
它是由应用生成的,记录了应用所改变的所有内容。利用增量文件效率很高,它避免了
扫描整个数据库,但同样的问题是生成 DELTA 文件的应用并不普遍。此外,还有更改应用
代码的方法,使得应用在生成新数据时可以自动将其记录下来。但应用成千上万,且修改代
码十分繁琐,同时涉及业务应用,所以这种方法很难实现。
三. 数据快照
在抽取数据前后对数据库各作一次快照,然后比较两幅快照的不同从而确定新数据。它
广州菲奈特软件有限公司 第 5 页 共 6 页
占用大量资源,对性能影响极大,因此并无多大实际意义。
数据抽取(ETL)基础
四. 日志文件
最可取的技术大概是利用日志文件了,因为它是 DB 的固有机制,不会影响 O LTP 的性
能。同时,它还具有 DELTA 文件的优越性质,提取数据只要局限日志文件即可,不用扫描
整个数据库。当然,原来日志文件的格式是依据 DB 系统的要求而确定的,它包含的数据对
于数据仓库而言可能有许多冗余。比如,对一个记录的多次更新,日志文件将全部变化过程
都记录下来;而对于数据仓库,只需要最终结果。但比较而言,日志文件仍然是最可行的一
种选择。
五. 业务逻辑
在进行增量抽取时也可以利用实际业务应用中提供的逻辑来进行增量抽取,但是使用该
方法必须对应用逻辑十分了解,并且受应用的牵制较多,并非最佳选择。
由于数据增量抽取的复杂性,以上各种方法的应用往往是结合使用的,并且在必要的时
候可能需要人工的干预,而怎样才能使增量抽取达到最大的自动化也仍然是一个正在摸索中
的难题。
广州菲奈特软件有限公司 第 6 页 共 6 页