hive拉链表日更新语句 拉链表辅助理解

 

一句话总结 拉链表如何日更新:

old:拉链表历史数据

new: 原始表 更新或者新增的数据

语句:

old left join new 把交集的地方的行有效期 endtime字段从无穷大 9999-12-31改成 昨天

union

new 行有效期 startTime设置为昨天 endtime设置成无穷大 9999-12-31

 

看图理解拉链表更新原理:

 

关于字段:

createTime endTime表示该行的有效期 开始时间 结束时间 超出该时间段表示改行数据不存在.这个肯定是根据你mysql或者业务数据库的字段来的.

比如: 我这有个论坛提问信息表,里面有两个重要的字段 creat_time update_time,分别表示问题创建时间(一旦创建不会改动),update_time表示数据库该条信息某些字段被修改时记录的时间. 还有提问的id(自增主键)(mysql 业务数据库应该是直接覆盖重写该数据);

什么时候用拉链表:

上面只有当业务需要知道某条数据被修改前的状态,这种情况就需要拉链表.

如果不需要之前被抛弃的状态,直接 ( old full join new 所有字段有新的就用新的,没有就用旧的.)

说白了 拉链表就是每行给个生命周期的表 这样被删除或者被修改的数据就不会丢失,方便回溯查看.

 

如有问题 欢迎评论.