储存过程之拉链表

很多做数仓的朋友在面试的时候都会被问到,你写过的最难的存储过程是什么,这时候我们都会想到拉链表,拉链表真的那么难吗,下面我简单介绍一下拉链表作用,以及制作思路,希望可以帮到你。

拉链表的作用:数据进行增量或者全量同步时,我们希望保留少数字段历史数据的变化,如账户余额变化,个人资料变更等。

本文以实现用户邮箱变更为例,详述拉链表制作思路:

第一步:创建用于记录用户邮箱变更的拉链表:

1.1 创建拉链表 user_email_history, 假设目标表叫做 user_info (u_id ,u_name , u_sex ,u_birthday, u_address , u_email , u_tel ,u_update )

create table user_email_history
(user_id number(10),                 -- 用户id
user_email varchar2(20),             --用户邮箱
beg_date date,                       --上一次更新时间
end_date date )                     --最后一次更新时间(最后一次更新后,我们将这个时间设置为 5000/12/31,用于查找链表中最后一批更新的数据)

 

第二步:找到 拉链表中最后一批更新的数据  该数据已经发生了变更  ,  在拉链表中更新该数据的end_date,

你可能感兴趣的:(etl,etl,数据仓库,链表)