news 2026/9/5 15:08:12

Hive拉链表实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hive拉链表实现

拉链表

  • 定义:用来记录历史变化,相比每天存储全量数据,可大幅减少数据冗余,可以基于历史变化,统计分析历史变化信息
  • 使用场景: 用于记录维度变化场景,记录维度变化,根据维度变化记录,统计聚合,加成生成不同时期历史指标

Hive 拉链表实现

实现原理

  • 首次(T+1: 2023-04-01) 同步业务系统全量数据到ods_user_info,并确定记录数据变化时标记字段(如日期变更)
  • 将首次全量数据导入到拉链表 dws_user_info_history 信息,记录开始日期(T+1),和截至日期(9999-12-31)
  • 记录当天更新数据,存储到另一张ods_user_info_update,用于与拉链表进行关联
  • 然后进行第二次拉链表制作,如果更新表数据跟拉链表关联上,则截至日期置为T+1 (2023-04-01),若关联不上,则仍然是有效数据;然后再将更新数据ods_user_info_update 与关联后的数据进行union
  • 生成最终拉链表

例子

ods 表

-- ods表 DROP TABLE IF EXISTS ods_user_info; create table if not exists ods_user_info( `id` string COMMENT '用户id', `name` string COMMENT '姓名', `register_date` string COMMENT '注册日期' )COMMENT '用户信息 表' PARTITIONED BY(dt STRING); INSERT OVERWRITE TABLE ods_user_info PARTITION(dt = '2023-04-01') select name,email,'2023-04-01' from sdi_hljy_hrr_rzzp_jlxt.sdi_bs_employee

– 更新增量表

-- 增量表 DROP TABLE IF EXISTS ods_user_info_update; create table if not exists ods_user_info_update( `id` string COMMENT '用户id', `name` string COMMENT '姓名', `register_date` string COMMENT '注册日期' )COMMENT '用户信息更新表' PARTITIONED BY(dt STRING); INSERT OVERWRITE TABLE ods_user_info_update PARTITION(dt = '2023-04-02') select name,email,'2023-04-02' from sdi_hljy_hrr_rzzp_jlxt.sdi_bs_employee limit 10

拉链表

DROP TABLE IF EXISTS dws_user_info_history; create table if not exists dws_user_info_history( `id` string COMMENT '用户id', `name` string COMMENT '姓名', `register_date` string COMMENT '注册日期' , t_start_date string COMMENT '开始日期' , t_end_date string COMMENT '结束日期' ) COMMENT '用户信息更新表'

首次插入

INSERT INTO TABLE dws_user_info_history select id,name,'2023-04-01','2023-04-01','9999-12-31' from ods_user_info

后续更新拉链

INSERT OVERWRITE TABLE dws_user_info_history SELECT A.id, A.name, A.register_date, A.t_start_date, -- 更新表关联上,则该条记录失效 CASE WHEN A.t_end_date = '9999-12-31' AND B.id IS NOT NULL THEN '2023-04-01' -- 未关联上,则仍然有效 ELSE A.t_end_date END AS t_end_date FROM dws_user_info_history A LEFT JOIN ods_user_info_update B on A.id = B.id -- 与新增的数据进行合并 UNION SELECT C.id, C.name, C.register_date, '2023-04-02' AS t_start_date, '9999-12-31' AS t_end_date FROM ods_user_info_update C
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 15:07:27

微信小程序人脸识别在智慧工地的应用:技术架构与实战优化

简介:本资源是一套面向高校计算机专业本科生的毕业设计级微信小程序开发实战项目,聚焦智慧工地场景下的人脸识别考勤与人员管理功能实现,适用于Java后端小程序前端全栈学习与课程大作业参考。压缩包共410个文件,含92个Java源码&am…

作者头像 李华
网站建设 2026/9/5 15:05:34

基于MediaPipe与rPPG的多模态情绪分析系统:从面部关键点到心率监测

简介:这是一套面向计算机视觉与情感计算初学者的智能测谎实验项目源码,适用于高校课程设计、AI兴趣实践及轻量级行为分析研究。项目基于MediaPipe实现高精度面部关键点检测,并融合心率估计算法与微表情线索识别逻辑,支持实时摄像头…

作者头像 李华
网站建设 2026/9/5 15:05:23

贪心题目:种花问题

文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:种花问题 出处:605. 种花问题 难度 3 级 题目描述 要求 有一个很长的花坛,一部分地块种植了花,另一部分地块没有种…

作者头像 李华
网站建设 2026/9/5 15:02:42

aarch64 OpenSSL构建包深度解析与安全集成指南

简介:本资源是专为嵌入式与ARM平台开发者准备的aarch64架构OpenSSL交叉编译成果包,面向需在64位ARM服务器、边缘设备或移动终端上实现TLS/SSL安全通信的中高级开发人员。压缩包内含84个文件,涵盖静态库(libcrypto.a、libssl.a&…

作者头像 李华
网站建设 2026/9/5 14:49:06

SAP CO成本管理51集完整教程:从基础到实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 14:46:47

基于YOLO与PyQt5的蜜蜂目标检测系统开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华