hive 全量表、增量表、快照表、切片表和拉链表

全量表 :记录每天的所有的最新状态的数据,
增量表 :记录每天的新增数据,增量数据是上次导出之后的新数据。
快照表 :按日分区,记录截止数据日期的全量数据
切片表 :切片表根据基础表,往往只反映某一个维度的相应数据。其表结构与基础表结构相同,但数据往往只有某一维度,或者某一个事实条件的数据 拉链表 :记录每条信息的生命周期,当一条记录的生命周期结束,就会重新开始一条新的记录,并把当前日期放入生效开始日期。如果当前信息至今有效,则在生效结束日期中填入一个极大值(如9999-99-99) ,一般在数仓中通过增加start_date,end_date两列来表示。

拉链表适合于数据会发生变化,但是大部分是不变的。

使用拉链表的方式:通过生效开始日期<= 某个日期 生效结束日期>=某个日期,能够得到某个时间点的数据全量切片。

拉链表的形成过程,比如下图

如何制作拉链表?

1)新建和初始化拉链表dwd_order_info_his(首次独立执行)

sql 复制代码
drop table if exists dwd_order_info_his;
create external table dwd_order_info_his(
    `id` string COMMENT '订单编号',
    `total_amount` decimal(10,2) COMMENT '订单金额',
    `order_status` string COMMENT '订单状态',
    `user_id` string COMMENT '用户id' ,
    `payment_way` string COMMENT '支付方式',
    `out_trade_no` string COMMENT '支付流水号',
    `create_time` string COMMENT '创建时间',
    `operate_time` string COMMENT '操作时间',
    `start_date`  string COMMENT '有效开始日期',
    `end_date`  string COMMENT '有效结束日期'
) COMMENT '订单拉链表'
stored as parquet
location '/warehouse/gmall/dwd/dwd_order_info_his/'
tblproperties ("parquet.compression"="snappy");
 
insert overwrite table dwd_order_info_his
select
    id,
    total_amount,
    order_status,
    user_id,
    payment_way,
    out_trade_no,
    create_time,
    operate_time,
    '2019-01-01',
    '9999-99-99'
from ods_order_info oi
where oi.dt='2019-01-01';

2)获取当日变动数据:包括新增和修改(每日执行)

//当天的订单变化表dwd_order_info数据获取:

sql 复制代码
INSERT overwrite TABLE dwd_order_info PARTITION (day = '2019-01-02')
SELECT orderid,status
FROM orders
WHERE (createtime = '2019-01-02'  and modifiedtime = '2019-01-02') OR modifiedtime = '2019-01-02';

3)合并变动数据和旧拉链表数据(有更新的信息需要修改生效结束日期,无更新的信息生效结束日期不变)之后插入到临时表中

比如下图:

4)用临时表覆盖旧拉链表

sql 复制代码
insert overwrite table dwd_order_info_his 
select * from dwd_order_info_his_tmp;
相关推荐
呆呆小金人1 天前
SQL字段对齐:性能优化与数据准确的关键
大数据·数据仓库·sql·数据库开发·etl·etl工程师
口_天_光健1 天前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
梦里不知身是客112 天前
spark读取table中的数据【hive】
大数据·hive·spark
DashVector2 天前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
yumgpkpm2 天前
Doris在CMP7(类Cloudera CDP 7 404版华为Kunpeng)启用 Kerberos部署Doris
大数据·hive·hadoop·python·oracle·flink·cloudera
Mr_Art892 天前
金融行业湖仓实践:Apache Paimon 小文件治理之道
数据仓库·金融·apache
数据牧羊人的成长笔记3 天前
Hadoop 分布式计算MapReduce和资源管理Yarn
hadoop·eclipse·mapreduce
帅次3 天前
系统分析师-案例分析-数据库系统&数据仓库&反规范化技术&NoSQL&内存数据库
大数据·数据库·数据仓库·oracle·kafka·数据库开发·数据库架构
新疆嘉博智选科技有限公司3 天前
Macos系统上搭建Hadoop详细过程
大数据·hadoop·分布式
计算机编程-吉哥3 天前
大数据毕业设计项目推荐 基于大数据的广西药店数据可视化分析系统 1.65w条数据【大数据毕业设计项目选题】
大数据·hadoop·毕业设计·计算机毕设·大数据毕业设计选题推荐