ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ETL拉链算法大全(搬运)

2020-07-19 17:33:51  阅读:295  来源: 互联网

标签:... 拉链 数据 xxx 表中 dt where ETL 大全


拉链算法总结大全:
一、0610算法(追加)
1、删除仓库表的加载日期是本次加载日期的数据,以支持重跑
delete from xxx where start_dt >=$tx_date;
2、创建临时表,用于存放从源表中提取的数据
create multiset volatile table xxx;
3、向临时表中插入数据,按照一定规则加工
insert into xxx select ... from xxx;
4、对于临时表的数据打上时间戳直接插入仓库表中
insert into xxx select ... from xxx;
二、0611算法(全删全插)
1、将仓库表中主键处于源表的字段记录删除
delete from xxx where (id) in (select id  from xxx);
2、将源表的所有数据直接插入到仓库表中
insert into xxx select ... from xxx;
三、0612算法(历史拉链算法)
1、删除仓库表的加载日期是本次加载日期的数据,用于支持重跑
delete from xxx where start_dt >= $tx_date;
2、修改仓库表的结束日期字段,作用是把结束日期大于加载日期并且不是最大日期的数据的结束日期置为最大日期,使其有效
update set end_dt=$max_dt where end_dt >= $tx_date and end_dt <> max_dt;
3、创建临时表用于存放从源表中提取的数据
create multiset volatile table new;
4、创建临时增量表用于存放增量数据
create multiset volatile table inc;
5、根据一定的规则向临时表中加载源表数据,根据需求而定
insert into new select ... from  xxx where ...;
6、用临时表的数据与仓库表数据作对比,将新增和更改的数据存入增量表中
insert into inc select ... from new where .. not in ..;
7、对所有在增量表的并且是有效的数据进行关链处理
update xxx set end_dt=$tx_date where ...;
8、对所有处于增量表中的数据进行拉新链处理
insert into xxx select ... from inc;
四、0614(带删除的历史拉链算法)
1、删除仓库表的加载日期是本次加载日期的数据,用于支持重跑
delete from xxx where start_dt >= $tx_date;
2、修改仓库表的结束日期字段,作用是把结束日期大于加载日期并且不是最大日期的数据的结束日期置为最大日期,使其有效
update set end_dt=$max_dt where end_dt >= $tx_date and end_dt <> max_dt;
3、创建临时表用于存放从源表中提取的数据
create multiset volatile table new;
4、创建临时增量表用于存放增量数据,这里会存放源系统物理删除的数据并使用min_date进行标识
create multiset volatile table inc;
5、根据一定的规则向临时表中加载源表数据,根据需求而定
insert into new select ... from  xxx where ...;
6、用临时表的数据与仓库表数据作对比,将新增和更改的数据存入增量表中
insert into inc select ... from new where .. not in ..;
7、用仓库表的有效数据主键跟临时表数据主键作对比 in 仓库表 not in 临时表的即为源系统物理删除的字段,将其end_dt用min_date标识存入增量表(这条数据来源于仓库)
insert into .. select ... from where end_dt=$max_date and etl_job_num=920 and (agt_num,agt_modif_num) not in (select agt_num,agt_modif_num from new)
8、对所有在增量表的并且是有效的数据进行关链处理
update xxx set end_dt=$tx_date where ...;
9、对所有处于增量表中的并且end_dt标识不是min_date的数据进行拉新链处理
insert into xxx select ... from inc where end_dt <> $min_date;
五、0616(经济型历史拉链算法)
1、设置事无级别为RU优先于其他事务
set session characteristics as transaction isolation level ru
2、创建临时表用于存放从源表中提取的数据
create multiset volatile table new
3、创建增量表用于存放增量数据 这里只会存放新增个更改的数据
create multiset volatile table inc
4、创建删除表用于存放逻辑删除数据 带有特殊标识的逻辑删除数据
create multiset volatile table del
5、向临时表中插入数据按照一定的加载规则
insert into new 
6、用临时表的数据与仓库表数据作对比将新增的更改的数据存入增量表中
insert into inc select ... from new 
7、将源表数据中有特殊标识的(一般为end_dt=min_date)存入删除表中
insert into del select .. from new where end_dt=min_date
8、对所有在增量表和删除表中数据进行关链处理
update xxx set end_dt=$tx_date where ...
9、对所有在增量表中的数据拉新链除了指定项
insert into xxx select ... from inc where seq_num <>''
六、0613(逻辑删除的历史拉链算法)
0613和0616几乎一样,除了最后一步
9、对所有在增量表中的数据拉新链

 

搬运!

搬运!!

搬运!!!
原文链接:https://blog.csdn.net/bff1022/article/details/47837771

标签:...,拉链,数据,xxx,表中,dt,where,ETL,大全
来源: https://www.cnblogs.com/giveMeHair/p/13340498.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有