数据仓库拉链表回滚实现及本质

问题背景:拉链表如果有一天的数据错了,比如说到12月15号,但是发现11月10号拉链的数据错了,导致后续拉链的结果都错了,这个应该怎么修正拉链表的回滚问题?

希望大家可以关注下公众号,支持一下,鞠躬感谢~
在这里插入图片描述

修正拉链表回滚问题本质就是:
其实目的就是找到历史的快照。
历史的快照可以根据起始更新时间,那你就找endtime小于你出错的数据就行了,出错日期的数据就行了。
重新导入数据,将原始拉链表数据过滤到指定日期之前即可。
举例:
拉链表dwd_userinfo_db,目前时间是2020-12-15,想回滚到2020-11-27,那么拉链表的状态得是2020-11-26

userid		starttime		endtime
1			2020-11-12		2020-11-26
1			2020-11-27		9999-99-99
2			2020-11-16		2020-12-13
2			2020-12-14		9999-99-99

拉链表回滚:过滤starttime<=2020-11-26的数据,将endtime>=2020-11-26的修改为9999-99-99

insert overwrite table dwd_userinfo_db
select
	userid,
	starttime,
	if(endtime>=2020-11-26,'9999-99-99',endtime)
from dwd_userinfo_db
where starttime<=2020-11-26

可以看见,本质就是过滤数据到回滚日期的前一天。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值