拉链表
-
hive中的拉链表A数据如下
userId addr starttime endtime 008 gz 2021-01-01 9999-12-31 -
增量进入数据表B数据如下
userId addr starttime endtime 008 sh 2021-01-02 9999-12-31 011 jx 2021-01-02 9999-12-31 012 zj 2021-01-02 9999-12-31 -
A表left join B表关联 --C
userId addr starttime endtime 008 sh 2021-01-02 2021-01-01 011 jx 2021-01-02 2021-01-01 012 zj 2021-01-02 2021-01-01 select a.userid, a.phone, a.nick, a.gender, a.addr, a.starttime, --如果这条数据没有更新或者这条数据不是要更改的数据,就保留原来的值,否则就改为新数据的开始时间-1 if(b.userid is null or a.endtime < '9999-12-31', a.endtime , date_sub(b.starttime,1)) as endtime from dw_zipper a left join ods_zipper_update b on a.userid = b.userid ; -
A表union all C -->新的链表
userId addr starttime endtime 008 gz 2021-01-01 9999-12-31 008 sh 2021-01-02 2021-01-01 011 jx 2021-01-02 2021-01-01 012 zj 2021-01-02 2021-01-01