一、概念

  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之后的新数据。

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

真正秒懂增量表、全量表和拉链表相关推荐

  1. 什么是全量表,增量表,快照表,拉链表?

    这一篇文章我们的目的是搞懂这四种表的概念,闲话不多说,直接看文字. 全量表 全量表没有分区,表中的数据是前一天的所有数据,比如说今天是24号,那么全量表里面拥有的数据是23号的所有数据,每次往全量表里 ...

  2. 数仓建模-增量表及全量表

    判断一张表是增量表还是全量表,我认为有以下步骤: 1.这张表是基础数据表还是统计数据表(基础数据表一般来自业务系统的明细记录数据,统计数据表则为基于明细记录数据通过各种统计口径的统计表). 2.判断这 ...

  3. hive 如何判断 增量表和全量表

    文章目录 定义 如何判断 定义 全量表 全量表没有分区,表中的数据是前一天的所有数据,比如说今天是24号,那么全量表里面拥有的数据是23号的所有数据,每次往全量表里面写数据都会覆盖之前的数据,所以全量 ...

  4. update 两个表关联_你真的了解全量表,增量表及拉链表吗?

    1 Mysql数据准备 第一天 9月10号数据 1,待支付,2020-09-10 12:20:11,2020-09-10 12:20:112,待支付,2020-09-10 14:20:11,2020- ...

  5. 全量表/增量表/快照表

    全量表:没有分区,包含截止目前所有的数据. INSERT OVERWRITE TABLE $target.table PARTITION (datekey='$now.datekey') INSERT ...

  6. 增量表、全量表和拉链表

    概念 增量表:记录更新周期内新增的数据,即在原表中数据的基础上新增本周期内产生的新数据: 全量表:记录更新周期内的全量数据,无论数据是否有变化都需要记录: 拉链表:一种数据存储和处理的技术方式,可以记 ...

  7. hive增量表和全量表_你需要了解的全量表,增量表及拉链表

    mysql测试数据准备第一天 9月10号数据 1 2 31,待支付,2020-09-10 12:20:11,2020-09-10 12:20:11 2,待支付,2020-09-10 14:20:11, ...

  8. 什么是增量表,全量表,快照表?

    按照每天存放的数据以及是否按天分区可以分为增量表,全量表和快照表

  9. 拉链表、增量表、全量表

    1.概念解析 (1)存量:系统在某一时点时的所保有的数量: (2)流量:是指在某一段时间内流入/出系统的数量 (3)增量:则是指在某一段时间内系统中保有数量的变化 (4)增量 = 流入量 - 流出量 ...

最新文章

  1. RouterOS连载3:架设PPPoE服务
  2. mysql中的EXPLAIN
  3. Post with HttpClient
  4. 2018年,JavaScript都经历了什么?
  5. 【BERT】BERT模型压缩技术概览
  6. Java 垃圾回收机制,你知多少??
  7. 在线apt-get安装mysql_Linux Debain 通过apt-get 方式快速安装Mysql
  8. php 易语言md5加密解密,详解易语言调用js实现md5加密方法
  9. java 向父类_Java基础——面向对象(Object父类)
  10. AJAX with JSP and Servlet(代码)
  11. hdu 4301 Divide Chocolate 动态规划 递推 多校联合赛第二题
  12. OObjective-c UIView 蒙层
  13. ExtJS 教程目录
  14. 时间管理之-----《暗时间》-刘未鹏
  15. 苹果IOS9为加强个人隐私信息保护强制HTTPS,APP开发者需申请SSL证书
  16. python包编译过程中出现: /usr/local/cuda-9.0/nvcc: No such file or directory问题的简单解决办法
  17. C语言-链表逆序输出
  18. 巡检过程中有哪些注意事项?智能巡检了解一下
  19. python-etl框架bonobo使用入门
  20. 微信公众号运营商,如何选择适合自己的微信第三方平台?

热门文章

  1. 4G七问, 读懂4G的核心问题
  2. Adaptive Icons - Android O 自适应图标简单用法
  3. map_server
  4. 酷早报:7月21日Web3加密行业新闻大汇总
  5. 自己动手,丰衣足食 | 记录对OBS-Studio主题的简单修改
  6. hass智能 小米扫地机器人_搭建智能家居第三篇:小米系列接入homeassistant的教程分享...
  7. 我们知道很多道理,却依然过不好这一生?
  8. 鲁班学院-java架构师线上培训机构哪家好
  9. element UI 表单自定义验证,css水平且垂直居中方法
  10. 【高等数学】一元函数微积分学