目录:
一、拉链表介绍
二、拉链表使用场景
三、真实企业案例(社招案例)
四、相关面试题
一、拉链表介绍
拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。
二、拉链表使用场景
我们在设计模型的时候会遇到一些情况:
1.表中的部分字段会被更新,如企微添加好友,归因渠道。
2.需要查看某一个时间点或者时间段的历史快照信息,例如:查看某一个用户在年的求职状态。
3.表中的记录变化的比例和频率不是很大比如,总共有5亿的用户,每天新增和发生变化的有w左右,变化的比例占到很小。
三、实现过程(社招案例)
企业简历特权使用记录,修改成拉链表,记录历史更新状态
说明:data_dt为分区时间,pre1day为data_dt-1,ods为全量表
需要一张临时表,用于存放中间过程
建表:
准备数据:
将数据插入:ods_test_test_business_da的-10-22的分区中,按着拉链表的流程最后可以得到dwd_test_business_da表-10-22的最原始的数据,record_start_date为create_date,record_end_date为-12-31
插入ods_test_test_business_da分区为-10-23
1、新增直接取过来,未结束日期为-12-31
结果:
2.更新则保留前一日数据,并将记录结束日期记成更新日期,新记录的开始日期为更新日期
3.不变的记录,取昨日数据
4.删除的数据则保留前一日数据,并将记录结束日期记成更新日期
5.拉链结束的数据直接拿过来
6.得到最后的拉链表
四、相关面试题
什么是拉链表,怎样设计一张拉链表?
首先要说明拉链表是什么,什么业务场景下会使用,然后结合自己的业务细说,并解决了什么问题。