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

embedded/2024/9/24 8:20:53/

拉链表就是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时间,同时将新增信息后改写后的信息重新新增一行到原始数据表中即可。

案例流程:  


http://www.ppmy.cn/embedded/35903.html

相关文章

c++ 唤醒指定线程

在C中,直接唤醒一个特定的线程并不像在Java的Thread类中有interrupt()方法或者某些操作系统特定的API(如POSIX的pthread_cond_signal或Windows的SetEvent)那样简单。C标准库没有提供一个直接的方法来"唤醒"一个正在等待的线程。然而…

【二叉树算法题记录】222. 完全二叉树的节点个数

题目描述 给你一棵 完全二叉树 的根节点root ,求出该树的节点个数。 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位…

革新食品改良,解锁品质新高度——体验西奥机电TEX-01质构仪的卓越魅力

革新食品改良,解锁品质新高度——体验西奥机电TEX-01质构仪的卓越魅力 引领食品改良新潮流 在追求品质生活的今天,食品的口感和品质成为了消费者选择的重要标准。为了满足这一市场需求,食品企业正积极寻求新的改良方法,以提升产…

继承知识及扩展(C++)

1. 继承是什么? 继承是面向对象编程的三大特征之一,也是代码复用的手段之一。之前我们在很多的地方尝试函数的复用,而继承是为了类的复用提供了很好的方式。 (1)继承的代码怎么写 在一个类后面使用 :继承方…

面试经典150题——盛最多水的容器

面试经典150题 day28 题目来源我的题解方法一 双指针 题目来源 力扣每日一题;题序:11 我的题解 方法一 双指针 使用两个指针left和right,初始分别指向最左侧和最右侧,然后每次移动矮的一侧。存水量Math.min(height[left],heigh…

扩展学习|一文读懂知识图谱

一、知识图谱的技术实现流程及相关应用 文献来源:曹倩,赵一鸣.知识图谱的技术实现流程及相关应用[J].情报理论与实践,2015, 38(12):127-132. (一)知识图谱的特征及功能 知识图谱是为了适应新的网络信息环境而产生的一种语义知识组织和服务的方…

中间件研发之Springboot自定义starter

Spring Boot Starter是一种简化Spring Boot应用开发的机制,它可以通过引入一些预定义的依赖和配置,让我们快速地集成某些功能模块,而无需繁琐地编写代码和配置文件。Spring Boot官方提供了很多常用的Starter,例如spring-boot-star…

计算机系列之程序设计语言、编译原理、正规式、有限自动机

17、程序设计语言基础知识 低级语言:机器语言(计算机硬件只能识别0和1的指令序列),汇编语言。 高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近。 ◆汇编:将汇编语言翻译成目标…