Hive实战处理(十八)拉链表的设计和使用

本文介绍了拉链表在数据仓库中的应用,常见于处理大量记录且存在更新操作的场景。通过全量数据采集、增量数据识别、历史数据更新等步骤,实现对特定时间点历史快照的查看。具体样例展示了如何实现拉链表,用于存储和查询历史状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、拉链表的使用场景
在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:
1、 有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大一些。
2、 表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等。
3、 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
4、表中的记录变化的比例和频率不是很大,比如,总共有10亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。

二、拉链表的步骤分析
1、采集当日全量数据到ND(NewDay)表;
2、可从历史表中取出昨日全量数据存储到OD(OldDay)表;
3、(NDOD)就是当日新增和变化的数据,也就是当天的增量,用W_I表示;
4、(ODND)为状态到此结束需要封链的数据,用W_U表示;
5、将W_I表的内容全部插入到历史表中,这些是新增记录,start_date为当天,而end_date为max值;
6、对历史表进行W_U部份的更新操作,start_date保持不变,而end_date改为当天,也就是关链操作

三、拉链表的具体样例

1、创建从历史表查询昨天的表OD(OldDay)
CREATE TABLE temp.temp_test_array_user_his as 
select * from 
(select 'a' id,'100' amount,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值