Hive数仓缓慢渐变维之拉链表

缓慢渐变维

主要是为了解决, 是否需要在数仓中维护历史变化的数据操作

注意:如果不维护一个数据的历史变化信息, 那么在进行数仓分析的时候, 是有可能对未来分析的结果产生影响

实现缓慢维的3种方式

**SCD1**
对于历史变化的数据, 是进行维护操作, 直接进行覆盖即可
此种操作仅适合于对于错误数据处理

**SCD2(拉链表)--常用**
对原有表, 增加两个新的字段, 一个是起始的时间字段,一个是截止时间字段
当有数据发生变更后, 只需要对上一次数据进行标记起止范围, 新增一个新的变更后的数据即可, 由此产生一个拉链数据状态 
  好处: 不会修改原有记录数据操作, 利于维护操作, 而且可以对多个历史版本进行数据存储操作
  弊端: 造成数据冗余, 占用更大的磁盘空间

**SCD3**
直接对原有表, 进行新增列的方案, 一旦有数据发生变更, 新增一列字段, 标记当前最新数据即可,以此来维护历史变化数据 
适合于磁盘空间不足, 而且只需要维护少量历史变化情况
  优点: 尽可能减少数据冗余情况, 
  弊端: 不利于维护, 仅能维护少量的历史变化版本

拉链表

  • 拉链表处理逻辑
1.创建临时表

2.查询新数据,即抽取数据中 end_time="9999-99-99"

3.查询旧数据,就原拉链表的数据,如果主键 id 与抽取数据中的重复,且 end_time="9999-99-99",需要改成 end_time=业务日期 - 14.合并新旧数据到临时表

5.临时表插入原表
  • 基本流程图
  • CD2

Hive数仓缓慢渐变维之拉链表
https://jface001.github.io/2021/03/05/Hive数仓缓慢渐变维之拉链表/
作者
惊羽
发布于
2021年3月5日
许可协议