ETL是数据仓库建设中一个最重要和具有挑战性的工作,也是一个耗时而且费劲的工作。
数据抽取
数据仓库与操作型系统数据抽取的有一些:数据仓库必须从不同的系统中抽取数据;必须根据增量装载工作和初始完全装载的变化来抽取数据;而操作型系统只需要一次性抽取和数据转换。
数据抽取的要点
数据源确认:确认数据的源系统和结构;
抽取方法:针对每个数据源,定义抽取过程是人工抽取还是基于工具抽取;
抽取频率:对于每个数据源,确定数据抽取的频率,每天、每星期、每季度;
时间窗口:对于每个数据源,表示抽取过程进行的时间窗口;
工作顺序:决定抽取任务中某项工作是否必须等到前面的工作成功完成才能开始;
异常处理:决定如何处理无法抽取的输入记录;
数据源确认
首先确认是否拥有源系统提供需要的数据;然后,从源系统中建立每一个数据元素对应的正确的数据源;进行论证来保证确认的数据源是真正需要的。
数据抽取技术
操作型系统的源数据一般来说分当前值和周期性状态两类。当前值,源系统中的大多数数据属于这个类型,这里存储的属性值代表当前时刻的属性值,一般这种值在数据库中只保存一条记录;周期性状态值,属性值存储的是每次变化发生时的状态,在每一个时间点,状态值根据新值有效的时候进行存储,这个类型的数据变化的历史存储在源系统本身中,一般在数据库中保存多条记录。
从源操作型系统中抽取数据主要分静态数据和修正数据两种类型。静态数据是在一个给定时刻捕获的数据,就像是相关源数据在某个特定时刻的快照,一般在数据仓库的初始装载时使用静态数据捕获。修正数据也称为追加的数据捕获,严格来说它并不是增加的数据,而是最后一次捕获数据后的修正。追加的数据捕获可能时立刻进行的或者延缓的。
在立即型数据捕获中,数据抽取是实时的,当交易发生的时候就会在源数据库和文件中发生,共有三种不同的选择:1)通过交易日志捕获,这个技术在操作系统中没有额外的开销,因为交易日志的记录本来就是交易处理的一部分,但必须保证日志在文件刷新之前已经抽取了所有的记录,并且必须保证所有的源系统都是数据库应用系统;2)在数据库触发器中捕获,这种捕获是在源系统中发生的,因此非常可靠,但会增加开发负担和源系统增加额外开销,也同样需要保证全都是数据库应用程序的源系统;3)从源应用程序中捕获,这个方法可以用在所有类型的源数据中,但是必须修改相关的写入源文件和数据库中的应用程序。
延缓的数据捕获分两种,1)基于日期和时间标记的捕获,这项技术首先是假设所有的相关源记录中包括了日期和时间的标记。2)通过文件的比较来捕获,也叫做快照微分技术,它是通过比较源数据的两个快照进行工作的。
下面图表是各种捕获技术的优缺点比较:
数据转换
所有抽取的数据必须转换为数据仓库可用的数据,拥有可以用来进行战略决策的信息,是数据仓库最根本的原则。
数据转换的基本任务:选择、分离/合并、转化、汇总和丰富。
数据转换的主要类型:格式修正、字段解码、计算值和导出值、单个字段的分离、信息的合并、特征集合转化、度量单位的转化、日期/时间转化、汇总和键的重新构造。
数据的整合和合并:这个部分主要有两个问题,实体识别问题和多数据源问题。
维度属性的转换:
如何实施转换:使用转化工具,自动的工具会提高效率和准确性,并且转换参数和规则会被作为元数据存储起来,但是初始成
本较高,而且也不是所有的转换都能使用工具实现;手工技术,这种方法会带来复杂的编码和测试,而且元数据比较难处理。
数据装载
数据的装载有三种类型:初始装载、增量装载和完全刷新。
数据准备好之后,有四种把数据应用到数据仓库的方式:
装载:清空原有表再把数据装载进去;
追加:直接往表里追加数据,当一个输入记录与已经存在记录重复时,需要定义时丢弃还是插入一条新的记录;
破坏性合并:如果输入记录的主键与一条已经存在的记录的键互相匹配,那么就对匹配的目标记录进行更新;
建设性合并:如果输入记录的主键与已有记录的键匹配,那么就保留已有的记录加入输入的记录。
数据在初始装载完成后,可以通过更新和刷新两种方法对数据仓库的数据进行维护:
更新:对数据源中增加的变化的应用;
刷新:在特定周期中完全重新装载。
如果需要更新的记录数总数的25%,可能就要考虑使用刷新的方法。
事实表装载
初始装载的要点:
确认历史数据对于数据仓库有用;
定义和改进抽取商业规则;
捕获审查数据,在返回操作型系统;
执行事实表代理键;
改善事实表内容;
数据重构;
准备装载文件。
增量装载的要点
事实表的增量抽取:由新交易构成;由更新交易构成;为了数据捕获使用数据库交易日志。
事实表的增量装载:尽量频繁地装载;使用分区的文件和索引;应用并行处理技术。
ETL工具
供应商提供的ETL工具主要有3种:
1、数据转换引擎;
2、通过复制捕获数据;
3、代码生成器。