sql拉链表

   日期:2024-12-25    作者:wuk68 移动:http://mip.riyuangf.com/mobile/quote/14443.html

1、定义:维护历史状态以及最新数据的一种表(拉链表会增加两个字段,开链时间,闭链时间

2、使用场景

1、有一些表的数据量很大,比如一张用户表,大约1亿条记录,50个字段,这种表
2.表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等。
3.需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
4.表中的记录变化的比例和频率不是很大,比如,总共有1亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。

3、主要优点

维护历史状态:能够记录数据的历史变化,提供数据的完整视图。
优化存储:通过去除不变的记录,减少存储需求,同时允许快速还原历史状态。
处理缓慢变化数据:是处理缓慢变化数据(SCD2)的一种常见方式,适用于需要跟踪数据缓慢变化的应用场景。
然而,拉链表也存在一些挑战和限制,例如需要额外的字段来存储生效日期和失效日期,这可能会增加表结构的复杂性。此外,对于频繁更新的数据,拉链表可能需要更频繁的维护和更新操作。

4、orcal里面拉链表的四种获取数据的方式

4.1.更新删除数据,需要将闭链时间修改成昨天,etl时间修改成今天

4.2.更新新增数据,需要将开链时间修改成昨天,闭链时间修改成‘9999-12-31’,etl时间修改成今天

4.3.更新修改前数据,需要将闭链时间修改成昨天,etl时间修改成今天

4.4.更新修改后数据,需要将开链时间修改成今天,闭链时间修改成‘9999-12-31’,etl时间修改成今天

ps:4.3闭链时间何4.4的开链闭链时间需要形成一个闭合时间

5、hive里面拉链表获取数据的方式

5.1.创建一个临时表,表结构和拉链表保持一致

5.2.从拉链表里将昨天没有变化的数据追加到临时表里(通过id不等于业务表的id

5.3.删除的数据,将闭链时间修改成昨天,etl时间修改成今天,追加到拉链表里

5.4.新增的数据,增加开链的时间为创建时间,闭链时间为‘9999-12-31’,etl时间修改成今天,追加到拉链表里

5.5.修改前的数据,将闭链时间修改成昨天,etl时间修改成今天,追加到拉链表里

5.6.修改后的数据,将开链时间修改成今天,闭链时间为‘9999-12-31’,etl时间修改成今天,追加到拉链表里


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号