1. 程式人生 > >ETL拉鏈算法匯總大全

ETL拉鏈算法匯總大全

系統 插入 追加 char 日期字段 evel new 日期 creat

拉鏈算法總結大全:
一、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、對全部在增量表中的數據拉新鏈

ETL拉鏈算法匯總大全