0
点赞
收藏
分享

微信扫一扫

ETL算法 [拉链算法]

云上笔记 2022-04-04 阅读 50

ETL算法

数据仓库特点
建立在业务系统之上

  1. 面向主题
    数据仓库内的信息是按主题进行组织的
  2. 实时性要求不高
  3. 保存过去和现在的数据
  4. 数据很少更新
  5. 支持分析决策 (管理层)
  6. 数据是提炼的或者综合的

业务系统特点

  1. 面向应用 (app)
  2. 数据是详细的
  3. 数据可以更新,实时
  4. 支持事务处理
  5. 保持当前数据

拉链定义

数据仓库中
记录数据在某一时间内的状态以及数据在某一时点上的变化的数据存储方式
在这里插入图片描述

优点

数据优化

  1. 节省存储空间,避免没必要的重复数据(化繁为简)
  2. 记录数据变化,更加直观

缺点
断链难以恢复

算法

新增数据 ==> 开链
删除数据 ==> 关链
修改数据 ==> 先关链,在开新的拉链
在这里插入图片描述

流程

  1. 创建临时表 TA_ONE
    存放、转换处理后的数据
    所有数据抽过来
create table TA_ONE as select * from TA_yuan where 1=0;
--获取 TA_OLD 的表头

insert into TA_ONE (ID,NAME,BAL,START_DT,END_DT) --添加数据
select ID,NAME,BAL,to_date('2022-04-04',yyyyMMdd),to_date('2999-12-31',yyyyMMdd) from SJ_yuan;
 --从 SJ_yuan 中数据添加进去
 commit;
  1. 创建临时表 TA_TWO
    存放比对出增量的数据
    新增修改
create table TA_TWO as select * from TA_yuan where 1=0;

insert into TA_TWO (ID,NAME,BAL,START_DT,END_DT) 
select ID,NAME,BAL,START_DT,END_DT 
from TA_ONE 
where (ID,NAME,BAL) not in (
	select * from TA_yuan where END_DT = to_date('2999-12-31',yyyyMMdd));
commit;
  1. 修改 TA_yuan
    关链
update TA_yuan set END_DT = to_date('2022-04-04',yyyyMMdd)
where END_DT = to_date('2999-12-31',yyyyMMdd) and ID in (select ID from TA_TWO);
--开链状态 并关链
commit;
  1. 修改
    开链插入数据
insert into TA_yuan select * from TA_TWO;
commit;

使用

四号的数据

开始日期<=2014-04-04AND 
 结束日期 >2014-04-04;
举报

相关推荐

0 条评论