hadoop学习---基于Hive的数仓搭建增量信息拉链表的实现

拉链表就是SCD2,它的优点是即满足了反应数据的历史状态,又能在最大程度上节省存储。

拉链表的实现需要在原始字段基础上增加两个新字段:

  1. start_time(表示该条记录的生命周期开始时间------周期快照时的状态)
  2. end_time(该条记录的生命周期结束时间)

采集实现步骤

  1. 建立增量数据临时表update;
  2. 抽取昨日增量数据(新增和更新)到update表;
  3. 建立合并数据临时表tmp;
  4. 合并昨日增量数据(update表)与历史数据(拉链表):
    1. 新数据end_time设为'9999-12-31',也就是当前有效;
    2. 如果增量数据有重复id的旧数据,将旧数据end_time更新为前天(昨日-1),也就是从昨天开始不再生效;
    3. 合并后的数据写入tmp表;
  5. 将临时表的数据,覆盖到拉链表中;
  6. 下次抽取需要重建update表和tmp表。
  7. 查询拉链表数据时,可以通过start_time和end_time查询出快照数据。

小结:

当每日采集增量信息时,采用拉链表的方式,通常在原始信息表中增加有效信息开始时间start_time和结束时间end_time两个字段,先将改变或新增的信息提取出来组成一张新表,再将新表与原始表做右外联接,重新抽取字段更新end_time字段信息,目的是改变原始表的旧信息的end_time时间,最后将更新后的原始表和新增的更新信息表进行union all 操作,并将结果覆盖到hive数据库中。

也就是原有hive数据库中的表不变,想办法更新旧信息的end_time时间,同时将新增信息后改写后的信息重新新增一行到原始数据表中即可。

案例流程:

相关推荐
saoys21 分钟前
Opencv 学习笔记:一文掌握四种经典图像滤波(均值 / 高斯 / 中值 / 双边)
笔记·opencv·学习
●VON27 分钟前
可信 AI 认证:从技术承诺到制度信任
人工智能·学习·安全·制造·von
一瞬祈望1 小时前
⭐ 深度学习入门体系(第 11 篇): 卷积神经网络的卷积核是如何学习到特征的?
深度学习·学习·cnn
wdfk_prog1 小时前
[Linux]学习笔记系列 -- 底层CPU与体系结构宏
linux·笔记·学习
GISer_Jing1 小时前
AI Agent:学习与适应、模型上下文协议
人工智能·学习·设计模式·aigc
im_AMBER1 小时前
Leetcode 100 在链表中插入最大公约数
数据结构·c++·笔记·学习·算法·leetcode·链表
时间黑客2 小时前
SolidWorks百日建模(二)
学习
Webb Yu2 小时前
Solana 完整学习路线图
学习
蒸蒸yyyyzwd2 小时前
网络编程封装mutex、cond、semaphore学习笔记
笔记·学习
做cv的小昊2 小时前
【TJU】信息检索与分析课程笔记和练习(10)专利文献和中文专利检索
经验分享·笔记·学习·全文检索·学习方法·信息检索