Hive表类型及使用技巧-拉链表

本文介绍了Hive中的拉链表概念,这种表型用于记录事物变化历史,节省存储空间。内容包括数据加工与维护方法,如start_date、createtime字段的使用,以及分区策略如dp(ACTIVE、EXPIRED、HISTORY)和dt分区。查询规则部分讲解了如何获取特定日期的历史快照、新生成数据以及线上最新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拉链表

一、数据加工和维护
  1. 概念:
    所谓拉链表就是记录一个事物从开始 一直到当前状态的所有变化信息;通过比较,记录数据的生命周期,能够快速还原任意天的历史快照,而非全量的每天记录所有数据,因此极大节省了存储。
    一般表名后面xxx_chain
  2. 数据加工方式:
    (1)拉链表中一般会存在一个字段“start_date”表示该记录的起始时间,不代表创建时间,非业务时间。一把会存在"createtime"表示该条记录的创建时间。
    (2)分区:一般dp分区包含线上(‘ACTIVE’)、过期(‘EXPIRED’)其中ACTIVE表示当前线上状态。还会有end_date分区记录数据有效期的截止日期。dt分区表示记录加工的时间分区,因此end_date和dt一般相同。
    (3)有些情况,dp中还存在HISTORY分区,和生产系统对应。
    (4)dp='ACTIVE’每日都会保持与线上数据一致,其有效截止日期end_date一般会设置成一个较大的值,比如’4712-12-31’ 。
  3. 举例:
    id=1记录发生了变化,而id=4是新增的记录。

在这里插入图片描述
EXPIRED分区只关注发生变化的记录,ACTIVE是最新的线上数据。

二、查询规则
  1. 某一天历史快照,该天线上数据(历史上该天时的ACTIVE)

select * from xxx_chain where start_date<=MY_DATE and end_date>MY_DATE

  1. 某天新生成的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值