【ETL】拉链表算法
来源:互联网 发布:淘宝会员抓取导入系统 编辑:程序博客网 时间:2024/04/28 09:33
拉链表算法
所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。
算法:(拉链表算法其实就是以前遇到过的缓慢变化维的其中一种情况,用存储过程实现的话稍微麻烦点。)
1采集当日全量数据到ND(NewDay)表;
2可从历史表中取出昨日全量数据存储到OD(OldDay)表;
3(ND-OD)就是当日新增和变化的数据,也就是当天的增量,用W_I表示;
4(OD-ND)为状态到此结束需要封链的数据,用W_U表示;
5将W_I表的内容全部插入到历史表中,这些是新增记录,start_date为当天,而end_date为max值;
6对历史表进行W_U部份的更新操作,start_date保持不变,而end_date改为当天,也就是关链操作;
下面为具体例子:
OD(在第一天就等于HIS)
用户标志 状态开始时间结束时间
1 1 200712 299901
2 2 200712 299901
3 3 200712 299901
4 4 200712 299901
5 5 200712 299901
ND
用户标志 状态开始时间结束时间
1 2 200801 299901
2 2 200801 299901
3 4 200801 299901
4 4 200801 299901
5 6 200801 299901
W_I=ND-OD
用户标志 状态开始时间结束时间
1 2 200801 299901
3 4 200801 299901
5 6 200801 299901
W_U=OD-ND
用户标志 状态开始时间结束时间
1 1 200712 299901
3 3 200712 299901
5 5 200712 299901
INSERT操作把I插入到HIS
用户标志 状态开始时间结束时间
1 1 200712 299901
2 2 200712 299901
3 3 200712 299901
4 4 200712 299901
5 5 200712 299901
1 2 200801 299901
3 4 200801 299901
5 6 200801 299901
update操作按U更新HIS
用户标志 状态开始时间结束时间
1 1 200712 200801
2 2 200712 299901
3 3 200712 200801
4 4 200712 299901
5 5 200712 200801
1 2 200801 299901
3 4 200801 299901
5 6 200801 299901
转自http://blog.csdn.net/paopaomm/article/details/7491400
- 【ETL】拉链表算法
- 【ETL】拉链表算法
- 【ETL】拉链表算法
- 【ETL】拉链表算法
- ETL拉链算法简介
- ETL拉链算法汇总大全
- 拉链表算法
- 拉链表的展开算法
- 拉链表
- 拉链表
- 拉链表
- 拉链表
- 拉链表
- 拉链表
- 拉链表
- 数据仓库之拉链算法
- 数据仓库之拉链算法
- 拉链的通常算法
- [Python进阶-3]面向对象,类,实例,属性,方法,类属性,类方法,内部属性
- leetcode题目 旋转排序数列的查找
- 回顾spring(云计算项目)
- 【总结】Java基础总结⑺
- Kafka命令
- 【ETL】拉链表算法
- Codeforces Round #323 (Div. 1) B. Once Again... 最长非严格递增子序列
- 如何修改内核启动的logo
- Keepalived原理与实战精讲
- SQL server 数据库中的数据操作
- Android 控件框架
- 工作总结数据库集群
- WebKit 加载 时 加入动画
- Linux添加/删除用户和用户组