背景:
业务部门提了用户分层的需求,其中有一点,业务放需要我们数仓提供历史数据,并且业务库里的部分表还没有数据更新时间字段。所以本篇文章主要解决两个问题
1:问题一 怎么再HIVE里实现拉链表
2:问题二 怎么再没有数据更新时间字段的情况下获取增量数据(个人认为这个方式也是一种通用的方式)
一:拉链表是什么?使用场景?实现原理?
1:是什么? 拉链表是一张记录事务历史变化的表,记录一个事务从开始到当前发生的所有变化。
2:场景:我们需要获取用户的历史数据
3: 原理:所有数据=全量数据 + 变更数据
二 HVIE 实现拉链表
以下是我实现拉链表的过程,为了实验方便使用with as语句模拟了数据
-- 1:生成实验数据
with user_1 as (select -- 表1:全量数据
'zhangshan' as uid,123456 as phone, '1' as sex ,'2020-03-24' as start_time,'9999-12-30' as end_time
),
user_2 as (select -- 表2:增量数据(用户的性别出现了便跟)
'zhangshan' as uid,123456 as phone, '0' as sex
)
-- 2: 实现拉链
select *
from (--全量数据集: 修