ETL策略

分别从源数据,数据接口,ETL算法,数据仓库特性,解释涉及到的相关术语。

1.源数据

流水事件表

记录交易或事件的发生,在源系统中只会不断新增,不会被修改和删除。

状态表

记录实体信息的状态,反应属性或分类的变化。在源系统中会被新增,修改,删除。

代码表

用于记录数据代码和参数及其含义。一般不会发生变化。

2.接口形式

全量

数据文件为全表信息,包含全包全表所有记录。

增量

数据文件为表的变化信息,包含数据表的新增和更新部分。

带删除的增量

数据文件为表的变化信息,包含数据表的新增和更新部分以及带删除标识的数据。

3.ETL算法

insert 追加

取得接口形式为增量的数据文件,一般为流水事件表提供,直接追加到目标表,不存在更新。

merge 更新

取得接口形式为增量的数据文件,一般为状态表提供,需要更新目标记录并插入新增记录。

truncate 重载

取得接口形式为全量的数据文件,一般为状态表提供,清空目标表插入所有数据。

zipper 拉链

取得接口形式为增量的数据文件,一般为状态表提供,需要保留数据的变化历史值。数据呈现出时间连贯性,源数据始终能在拉链表提取,源数据主键的的记录能在拉链表提出历史状态,能够在拉链表中提取处制定日期有效的数据。

开链

1
2
3
4
源表                               拉链表

学号 学院 年级 班级 专业 方向 学号 学院 年级 班级 专业 方向 生效日期 失效日期
11 11 11 11 11 1 11 11 11 11 11 1 20171219 99991231

关链

1
2
3
4
5
源表 (学号22记录20171231被删除)      拉链表

学号 学院 年级 班级 专业 方向 学号 学院 年级 班级 专业 方向 生效日期 失效日期
11 11 11 11 11 1 11 11 11 11 11 1 20171219 99991231
22 11 11 11 11 1 22 11 11 11 11 1 20171219 20171231
1
2
3
4
5
6
源表 (学号11记录2018010被修改)      拉链表

学号 学院 年级 班级 专业 方向 学号 学院 年级 班级 专业 方向 生效日期 失效日期
11 11 22 11 11 1 11 11 11 11 11 1 20171219 20180101
22 11 11 11 11 1 22 11 11 11 11 1 20171219 20171231
11 11 22 11 11 1 20180101 99991231

4.数据仓库ETL特性

逻辑删除

不直接删除或被源系统更新的数据,而是在目标表新增逻辑删除字段,用删除代码标记记录被删除(更新)。

数据拉链

数据删除-拉链表关链删除记录
数据新增-拉链表开链新增记录
数据更新-拉镖表关链旧记录,开链新记录

获取拉链表有效记录

1
select * from table where 失效日期 = '99991231'

获取拉链表20171217有效记录

1
select * from table where '20171217' between 生效日期 and 失效日期

获取拉链表20171217新增和更新数据

1
select * from table where 生效日期 = '20171217'

获取拉链表20171217被更新和删除数据

1
select * from table where 失效日期 = '20171217'