数仓开发拉链表

本文介绍了如何使用拉链表记录用户信息表的变更历史。首次全量同步将所有数据插入,之后每天处理新产生的数据,区分完全新增和修改数据,通过开链和闭链操作维护有效性区间。最后,对数据进行整合并更新到拉链表。
摘要由CSDN通过智能技术生成

1.拉链表介绍

假如有一个业务数据表user_info,里面记录了用户的基本信息,主键、姓名、年龄、性别、地址、电话、数据更新日期。
在这里插入图片描述
由于用户可能会修改个人信息,为了更好地记录、溯源,所以建立了拉链表来对所有的历史修改的数据进行记录。主要就是对每条数据增加了数据的有效期区间bdate和edate,就是说这条数据在哪个时间中是有效的。9999/12/31类似就代表这条数据是最新的,因为它的失效日期在9999年。
在这里插入图片描述
拉链表主要就是每天取出新增和修改的数据,进行开链和闭链的操作。

2.首次全量同步数据

第一次往拉链表中插入数据时,是全量插入。

insert into user_info_lalian(
pkid
,name
,age
,gender
,address
,tel
,updatetime
,bdate	--数据产生时间(有效开始时间)
,edate	--数据失效时间
)
select
pkid
,name
,age
,gender
,address
,tel
,updatetime
,trunc(updatetime) as bdate	--数据产生时间(有效开始时间)
,date'9999-12-31' as edate	--数据失效时间
from user_info;

3.处理每天新产生的数据

拉链表每天都需要处理数据,user_info表中updatetime就是新产生的标志。比如今天是2022年2月1日,user_info中updatetime有2022年2月1日的数据,那么就表示今天有新产生的数据。

(1)新产生的数据主要分为2种:

完全新增的数据: 例如有个新用户小王在2022年2月1日首次注册了app。
信息发生变更的数据: 例如上个月注册的用户小李在2022年2月1日,修改了自己的手机号。

(2)新产生数据的开链和闭链

  • 11
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值