ETL算法详解 etl什么意思( 二 )


Insert into <临时表-增量-upd>
Select 不含开闭链字段***,开始时间
From <临时表-开链-pre>
where (不含开闭链字段***) not in
(Select 不含开闭链字段***
From <临时表-开链-cur>);
–步骤5 更新闭链数据,即历史记录闭链(删除-插入替代更新)
DELETE FROM <目标表>
WHERE (PK***) IN
(Select PK*** From <临时表-增量-upd>)
AND 结束日期=date'<最大日期>’;
INSERT INTO <目标表>
(不含开闭链字段***,开始时间,结束日期)Select 不含开闭链字段***,开始时间,date'<数据日期>’
From <临时表-增量-upd>;
— 6 插入开链数据,即当日新增记录
INSERT INTO <目标表>
(不含开闭链字段***,开始时间,结束日期)Select 不含开闭链字段***,date'<数据日期>’,date'<最大日期>’
From <临时表-增量-ins>;
5、增量拉链算法
算法实现逻辑是提取上日开链数据-PK相同变化记录,关闭旧记录链,开启新记录链-PK不同,源表存在,新增开链记录 。增量拉链,目的是追踪数据增量变化历史,根据PK比对新拉一条开链数据 。
SQL代码模型:
— 步骤1. 提取当前有效记录
Insert into <临时表-开链-pre> (不含开闭链字段***)
Select 不含开闭链字段***
From <目标表>
Where 结束日期 =date'<最大日期>’;
–步骤2. 提取当日源系统增量记录
<源表临时表-cur>
— 步骤3. 提取当日源系统新增记录
Insert into <临时表-增量-ins>
Select 不含开闭链字段***
From <临时表-开链-cur>
where (PK) not in
(select PK from <临时表-开链-pre>);
–步骤4. 提取当日源系统历史变化记录
Insert into <临时表-增量-upd>
Select 不含开闭链字段***
From <临时表-开链-cur>
inner join <临时表-开链-pre>
on (PK 等值)
where (变化字段 非等值);
–步骤5. 更新历史变化记录,关闭历史旧链,开启新链
update <目标表> AS T1
SET <变化字段 S1赋值>,结束日期 = date'<数据日期>’
FROM <临时表-增量-upd> AS S1
WHERE ( <PK 等值> )
AND T1.结束日期 =date'<最大日期>’
INSERT INTO <目标表>
(不含开闭链字段***,开始时间,结束日期)SELECT 不含开闭链字段***,date'<数据日期>’,date'<最大日期>’
FROM <临时表-增量-upd>;
–步骤6. 插入全新开链数据
INSERT INTO <目标表>
(不含开闭链字段***,开始时间,结束日期)SELECT 不含开闭链字段***,date'<数据日期>’,date'<最大日期>’
FROM <临时表-增量-ins>;
6、增删拉链算法
算法实现逻辑是,提取上日开链数据-提取源表非删除记录-PK相同变化记录,关闭旧记录链,开启新记录链-PK比对,源表存在,新增开链记录-提取源表删除记录-PK比对,旧开链记录存在,关闭旧记录链 。
SQL代码模型:
— 步骤1. 清理目标表
TRUNCATE TABLE <目标表>;
— 步骤2. 全量插入
INSERT INTO <目标表> (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE ***;
7、全量增删拉链算法
算法实现逻辑是提取上日开链数据-提取源表非删除记录_PK相同变化记录,关闭旧记录链,开启新记录链-PK比对,源表存在,新增开链记录-提取源表删除记录-PK比对,旧开链记录存在,关闭旧记录链-PK比对,提取旧开链存在但源表不存在记录,关闭旧记录链;主要是利用业务字段跟踪全量数据中包含删除的变化历史 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: