增量表全量表拉链表区别_hive 增量数据更新

增量表全量表拉链表区别_hive 增量数据更新一、概念增量表:记录更新周期内新增的数据,即在原表中数据的基础上新增本周期内产生的新数据;全量表:记录更新周期内的全量数据,无论数据是否有变化都需要记录;拉链表:一种数据存储和处理的技术方式,可以记录数据的历史信息,记录数据从开始一直到当前所有变化的信息。二、举例详解增量表:以页面访问数据表为例,假设该表从2020-06-01开始记录数据,按天更新,分区为dt。2020-06-01产生了三条访问数据,如下表:2020-06-02首页和商详页又产生了2条访问数据,该两条即为2020-06-

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、概念

  1. 增量表:记录更新周期内新增的数据,即在原表中数据的基础上新增本周期内产生的新数据;
  2. 全量表:记录更新周期内的全量数据,无论数据是否有变化都需要记录;
  3. 拉链表:一种数据存储和处理的技术方式,可以记录数据的历史信息,记录数据从开始一直到当前所有变化的信息。

二、举例详解

  1. 增量表:以页面访问数据表为例,假设该表从2020-06-01开始记录数据,按天更新,分区为dt。2020-06-01产生了三条访问数据,如下表:
    在这里插入图片描述
    2020-06-02首页和商详页又产生了2条访问数据,该两条即为2020-06-02新增的数据,表更新后,dt分区2020-06-02新增2条数据(标红),此时数据表如下:
    在这里插入图片描述
    以此类推,2020-06-03又产生1条访问数据,表更新后,2020-06-03分区下新增1条数据(标黄),此时数据表如下:
    在这里插入图片描述
    因此,增量表每次更新是在原表数据的基础上记录本周期内新增的数据,如上例,按天更新的流量表,每次更新只新增一天内产生的新数据。注意:每次新产生的数据是以最新分区增加到表中,原先的数据依然存在于表中,如今天是2020-06-03,新增1条数据到表中,dt=2020-06-03,但2020-06-01的数据依然在表中,可以按照dt=2020-06-01进行查询;
  2. 全量表:以用户表为例,假设该表从2020-06-01开始记录数据,按天更新,分区为dt。
    2020-06-01有三个用户注册,数据表如下:
    在这里插入图片描述
    2020-06-02有一名用户注册,即新增了一名用户(标红),表更新后2020-06-02分区内会记录全量的数据,包括2020-06-01的用户数据(标绿),此时数据表如下:
    在这里插入图片描述
    同理,2020-06-03又有2名用户注册,即新增了2名用户(标蓝),表更新后2020-06-03分区内会记录全量数据,即包含2020-06-02的用户数据(标黄),此时数据表如下:
    在这里插入图片描述
    因此,全量表每次更新都会记录全量数据,包括原全量数据和本次新增数据,即每个分区内的数据都是截至分区时间的全量总数据。注意:全量表中每个分区内都是截至分区时间的全量数据,原先分区的数据依然存在于表中,只是每次更新会在最新分区内再更新一遍全量数据。如上例,按照dt=2020-06-03查询出的数据是截至2020-06-03的所有注册用户数据,也可以按照dt=2020-06-02查询截至2020-06-02的所有注册用户数据。
  3. 拉链表:拉链表中有开始时间(start_time)和结束时间(end_time)两个字段,同时有dt和dp两个分区字段;
    start_time:数据的开始时间;
    end_time:数据有效的截至日期;
    dp:一般有ACTIVE(线上)和EXPIRED(过期)两个分区。ACTIVE表示数据当前在线上使用,所以其end_time为4712-12-31(系统能处理的最大时间,表示一个达不到的无限向后延伸的时间,意味着该数据在线上永久有效);EXPIRED表示数据过期,已变更,为历史状态,其end_time是数据变更时具体的时间。对于部分拉链表dp中还有HISTORY分区,此是由于有些拉链表数据量巨大,造成ACTIVE分区使用困难,因此将一部分业务上不再变更的数据转移到HISTORY分区。
    dt:数据所在的时间分区,记录数据从ACTIVE转移到EXPIRED的日期,即数据发生变更的时间,大部分与end_time一致;当dp中有HISTORY分区,且数据转移到HISTORY分区时,其dt为数据转移到HISTORY的时间。
    以账户数据表为例(表主键为账户id), 假设2020-06-01数据表中有3个账户信息,如下表:
    在这里插入图片描述
    2020-06-02账户id为111的用户支出100元,账户余额变为400,则原数据(标黄)的end_time即原数据的结束时间变为2020-06-02,dp变为EXPIRED即数据变为过期历史状态,dt为数据从ACTIVE变为EXPIRED的时间即2020-06-02;而新增的数据即账户id为111的用户余额变为400这条数据如下标红所示。数据表变化如下:
    在这里插入图片描述
    同理,2020-06-03账户id为222的用户支出50元,余额为50元,账户id为333的用户支出1000元,余额为500元,此时数据标变化如下:(标黄为变更前数据,标红为变更后数据)
    在这里插入图片描述
    因此,拉链表可以记录一条数据从开始到当前的所有历史信息,便于查询历史数据。如还原2020-06-02的历史快照,使用end_time> ‘2020-06-02’ and start_time<= ‘2020-06-02’ 查询,end_time过滤2020-06-02之前的旧数据,start_time过滤2020-06-02之后的新数据。

以上内容为个人学习所得,如有问题,欢迎交流指正~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181145.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jsonObject遍历_遍历数组找重复值

    jsonObject遍历_遍历数组找重复值 /** *String转JSONObject */ publicstaticvoidtest2(){ Stringjson="{\"name\":\"张三\",\"code\":\"123\"}"; JSONObjectjsonObject=newJSONObject(json); System.out.println("String转JSONObj.

    2022年8月23日
    10
  • Android使用系统签名以及安装[通俗易懂]

    Android使用系统签名以及安装[通俗易懂]在adt-bundle下编译APK,并进行Androidapk的系统签名.

    2022年6月21日
    36
  • StartActivityForResult的用法「建议收藏」

    StartActivityForResult的用法「建议收藏」当一个OneActivity跳转到TwoActivity时,TwoActivity关闭时要把数据传回到OneActivity,这个时候就得用到StartActivityForResult。使用这个方法特别要注意的是:一个Activity中可能包含多个按钮,并调用多个startActivityForResult方法来打开不同的Activity处理业务,当这些新Activity关闭后,系统会调用前…

    2022年7月27日
    11
  • VUE打包图片加载失败问题

    VUE打包图片加载失败问题昨天的搬运工,今天的小雷锋。 问题描述,使用VUE-CLI打包后,出现图片无法显示情况。这里可能存在两种情况:静态资源CSS中使用图片作为背景图片使用时。 在JS中生成图片标签后,再设置图片路径时。 当你吃着火锅唱着歌,一路npm-run-dev都相安无事的时候,打包完事后,发现突然图片显示异常了!如果你观察后,你会发现组件中使用的img标签都没任何问题,我们css中的背景图片…

    2022年5月5日
    105
  • 安防监控必备的基础知识「建议收藏」

    安防监控必备的基础知识「建议收藏」安防监控必备的基础知识 什么是云镜控制解码器?答:解码器是将前端发出的控制信号转换为电压信号从而控制云台、镜头的的装置。什么是同轴电缆?答:同轴电缆(COARIALCABLE)的得名与它的结构相关。同轴电缆也是监控中最常见的传输介质之一。它用来传递信息的一对导体是按照一层圆筒式的外导体套在内导体(一根细芯)外面,两个导体间用绝缘材料互相隔离的结构制选的,外层导体和中心轴芯线的…

    2022年4月19日
    49
  • rgbd slam v2_rgb数据格式

    rgbd slam v2_rgb数据格式系统版本:Ubuntu16.04+ROS-Kinect1、安装运行首先rgbdslamv2是2014年开源出来的一个机遇RGBD相机构建点云地图的框架【1】,作者已经在github上开源出了代码【2】,并且给出了一个一键安装的脚本(install.sh)。但是我们会发现,我们直接运行这个install脚本会在~/Code目录下创建一个rgbdslam_catkin_ws工作空间,…

    2025年11月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号