extract-transform-load (ETL)
Everyone understands the three letters: You get the data out of its original source location (E), you do something to it (T), and then you load it (L) into a final set of tables for the users to query.
每个人都知道这三个字母:你得到的数据从它的原始位置(E),你对它做些什么(T),然后你把它(L)为查询用户的最终组表。
这里简单列出数据核查阶段的工作项目:
1、数据的唯一标识和键值
2、数据类型
3、数据表之间的关联关系
4、表/字段之间的映射关系,1-1,1-m,m-m
5、null数据
6、日期数据,注意日期数据可能没有存储在日期型字段中,这是日期型数据不同于其他数据类型的一个特点
映射文档应该包括以下内容:
目标表:多维模型中的表名
目标字段:多维模型中表字段
目标列数据类型:
表类型:维度/事实/桥接
缓慢变化维:3类SCD
源数据库:源数据库名/文件路径,
源类型:DBMS类型,文件类型
源表:源表名,可能多个表对应一个DW/DM中的表
源列: 源列名
源列数据类型:
转换规则:定义源信息将经过怎样转换到DW/DM,通常用伪代码描述
一般ETL工具都提供了源与目标的映射功能,但是笔者依然强烈建议单独编制mapping文档,以方便查阅。
开发抽取过程之前需要确定的另一项重要内容就是System-Of-Record(SOR)
提高抽取效率
1、请求DBA在source段对抽取条件字段上创建索引;
2、只抽取需要的数据,需要的数据就是最终会被加载到多维模型的数据,多余的不要提取;
3、慎用Distinct,非常耗时
4、操作数据库时使用集合操作命令,集合概念是数据库的基础理论,努力把非集合的操作转化为集合操作,将充分利用DBMS的长处
5、不要在where条件中使用函数
6、避免使用NOT子句,它将导致全表扫描