从快照表到拉链表的构建方式(hive)
注意:本文主要讲解在没有新增标识(最后修改时间)的前提下,通过每个字段的比对变更将存量+后续增量的快照表转换成对应的拉链表。
初始数据和存量数据如下:
快照表->拉链表初始化!!!!!!!!!!!!!
NOTE:这次实践主要是针对hive中的拉链表,通过快照表将hive中得到快照维度表一次性初始化转换成拉链表
AUTHOR:SHUFANGGEGE
start:原始的快照表数据
id name inc_day
A a1 20220101
A a1 20220102
A a1 20220104
A a2 20220105
A a3 20220106
A a3 20220107
A a2 20220108
A a1 20220109
B b1 20220102
A b2 20220106
end:目标结果的快照数据
id name dw_start_date dw_end_date
A a1 20220101 20220105
A a2 20220105 20220106
A a3 20220106 20220108
A a2 20220108 20220109
A a1 20220109 99991231
B b1 20220102 20220106
B b2 20220106 99991231
过程分2步骤:
- 从存量快照初始化拉链 (1)
- 增量合并拉链 (2)
1 从存量快照初始化拉链
1.1 具体思路与数据变化过程

1.2 初始化代码
--创建模拟的快照表
DROP TABLE test_zip;
CREATE TABLE test_zip stored as parquet as
select 'A' as id ,'a1' as name, '20220101' as inc_day
union all select 'A' as id , 'a1' as name , '20220102' as inc_day
union all select 'B' as id , 'b1' as name , '20220102' as inc_day
union all select 'A' as id , 'a1' as name , '20220104' as inc_day
union all select 'A' as id , 'a2' as name , '20220105' as inc_day
union all select 'B' as id , 'b2' as name , '20220106' as inc_day
union all select

本文详细介绍了如何在Hive中,通过快照表构建拉链表的过程,特别是在没有新增标识的情况下,通过比较每个字段的变化实现快照表到拉链表的转换。文章分为两步,第一步是从存量快照初始化拉链,第二步是增量合并拉链。在增量合并中,涉及到对历史拉链和每日新增及变化数据的合并,确保拉链表的正确性。
最低0.47元/天 解锁文章
4639

被折叠的 条评论
为什么被折叠?



