Location: http://en.wikipedia.org/wiki/Extract,_transform,_load
基本概念:
ETL三部分,抽取,转换和加载,每个BI人都应该知道的基本知识,不做解释。
Transform:
ETL过程中最难的一个,从源到目标的一个转化过程,需要涉及一系列的业务规则。
- 选择特定列或者特定条件行,如NULL值的选择
- 值转化,如不同业务系统中表示性别的不同,A使用M,B使用1来表示男,需要将他们转化为同一的形式
- 新的计算列,新列=列1x列2
- 过滤,将特定条件的行过滤掉
- 排序
- 从多个表中查找,连接,Lookup
- 代理键的产生,用来连接其他dimention表
- 行列的转换
- 列拆分
- 查找验证
性能:
ETL用单位时间数据加载量(TB)来衡量他们的产品性能。
现实世界中,因为database必须进行并发,数据完整性,index的检查,因而ETL最慢的部分通常发生在Load过程中,因此我们可以采用以下的一些方法来提高性能:
- 使用bulk load来提取和加载数据
- 将Tranform过程放到database外来进行
除此以外,还有一些提高性能的方法:
- 数据分区
- 在load之前做数据完整性性检查,在load过程中disable constraint
- load过程中关闭触发器trigger
- ID在load之前产生,直接将ID load到数据库
- load之前删除index,load之后重新建index
- 使用distinct会严重影响性能,最好在load前近可能早的删除重复数据
只翻译了一部分自己比较关心的内容,个人在工作中遇到过这些提高性能的方法,当初还不明白为什么这样做,现在明白了。