【sql学习之拉链表】

1.拉链表理解

记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。
在这里插入图片描述
字段说明:

start_dt:该条记录的生命周期开始时间
end_dt:该条记录的生命周期结束时间
end_dt=’9999/12/31’表示该条记录目前处于有效状态
如果查询当前所有有效记录,select * from table where end_date=’9999/12/31’
如果查询2021/10/22的历史快照,select * from table where start_dt <=’2021/10/22’ and end_dt >=’2021/10/22’

2021/10/22的历史快照:
在这里插入图片描述

2. 拉链表实现方式

以在hive中为例(hive表一般只能进行删除和添加操作,不能进行update)
需要确定拉链表的时间粒度,比如拉链表每天只取一个状态,那如果一天中有3个状态变更,只取最后一个状态。

2.1 需要的信息

① 数据源信息:
数据全量信息,需要用来初始化;
② 每日更新信息(在分区表中添加更新标识字段或创建每日的更新数据表)
每日更新信息的获取方式:
在每日切片数据基础上,取第二天数据与前一天的不同数据,标记为更新。如何比较不同,可对所有字段先进行concat,取其md5进行比较,md5值不相等时,说明有更新。(hive环境需配置md5.jar包)
(取两天的切片数据,以md5字段做关联(full join),若第二天数据的md5不为空,说明为最新生效树,否则为失效数据。)
在这里插入图片描述
达到的效果:
对数据生效状态进行标记(生效/失效),删除及修改前数据为“失效”,新增及修改后数据为“生效”


数据变更形式:
数据不变、数据新增、数据删除、数据修改(修改=删除➡新增)
若要找出具体状态,可以用编码字段做关键字段关联(一般编码字段不会进行修改)
在这里插入图片描述
(取两天的切片数据,以编码字段做关联(full join),结合编码和md5判断数据变更形式)

2.2 添加标识字段(以编码字段关联)

①查看2021/10/24日数据
在这里插入图片描述
② 2021/10/25日数据
在这里插入图片描述
③ 两个分区日期对比下,在新一日数据中添加变更标识
1:删除,2:新增,3:修改,0:不变
在这里插入图片描述
实现方式:
在这里插入图片描述
① 前后两个分区日期的数据对比
② 使用full join (Mysql不支持,hive支持)
③ 关联字段为编码obj_cd,在标识数据变更状态时,进行全字段比较,这里是用concat函数将字段全部合并,生产环境中,一个表可能有几十或几百个字段,合并后的字符串长度会比较长。可以使用Md5函数,将长字符串转化为36位编码。(hive中需导入Md5函数的jar包)

2.3 根据标识字段,创建拉链表

① 首先历史信息存在
历史数据,其启用时间为2021/10/24,结束时间9999/12/31
在这里插入图片描述
② 根据变更标识字段,最新一日的更新信息为:
在这里插入图片描述
③ 将更新数据与历史数据做关联,更新拉链表起止时间,并追加新数据:
在这里插入图片描述
实现方式:
在这里插入图片描述
① 在历史数据中标记有变更的数据,更新结束时间end_dt
② 拼接更新数据(修改后数据 + 新增)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914286.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32中实现shell控制台(shell窗口输入实现)

文章目录 一、总体结构二、串口接收机制三、命令输入与处理逻辑四、命令编辑与显示五、历史命令管理六、命令执行七、初始化与使用八、小结在嵌入式系统开发中,使用串口Shell控制台是一种非常常见且高效的调试方式。本文将基于STM32平台,分析一个简洁但功能完整的Shell控制台…

区分三种IO模型和select/poll/epoll

部分内容来源&#xff1a;JavaGuide select/poll/epoll 和 三种IO模型之间的关系是什么&#xff1f;区分普通IO和IO多路复用普通IO&#xff0c;即一个线程对应一个连接&#xff0c;因为每个线程只处理一个客户端 socket&#xff0c;目标明确&#xff1a;线程中直接操作该 socke…

Actor-Critic重要性采样原理

目录 AC的数据低效性&#xff1a; 根本原因&#xff1a;策略更新导致数据失效 应用场景&#xff1a; 1. 离策略值函数估计 2. 离策略策略优化 3. 经验回放&#xff08;Experience Replay&#xff09; 4. 策略梯度方法 具体场景分析 场景1&#xff1a;连续策略更新 场…

【赠书福利,回馈公号读者】《智慧城市与智能网联汽车,融合创新发展之路》

「5G行业应用」公号作家团队推出《智慧城市与智能网联汽车&#xff0c;融合创新发展之路》。本书由机械工业出版社出版&#xff0c;探讨如何通过车城融合和创新应用&#xff0c;促进汽车产业转型升级与生态集群发展&#xff0c;提升智慧城市精准治理与出行服务效能。&#xff0…

5G NR PDCCH之处理流程

本节主要介绍PDCCH处理流程概述。PDCCH&#xff08;Physical Downlink Control Channel&#xff0c;物理下行控制信道&#xff09;主要用于传输DCI&#xff08;Downlink Control Information&#xff0c;下行控制信息&#xff09;&#xff0c;用于通知UE资源分配&#xff0c;调…

力扣网编程135题:分发糖果(贪心算法)

一. 简介本文记录力扣网上涉及数组方面的编程题&#xff1a;分发糖果。这里使用贪心算法的思路来解决&#xff08;求局部最优&#xff0c;最终求全局最优解&#xff09;&#xff1a;每个孩子只需要考虑与相邻孩子的相对关系。二. 力扣网编程135题&#xff1a;分发糖果&#xff…

每日mysql

什么是Mysql索引最左匹配原则&#xff1f;最左匹配原则是指&#xff0c;在复合索引中&#xff0c;查询条件需要从左到右和索引开始依次完全匹配的时候&#xff0c;复合索引才可以被有效使用。因为联合索引在建立b树的过程中是根据索引的顺序从左到右进行排序的&#xff0c;所以…

树莓派5-ollama-linux-arm64.tgz 下载

1.下载 由于官方下载速度太慢且容易失败&#xff0c;我这里上传了一份到云盘供大家下载&#xff1a; 通过网盘分享的文件&#xff1a;ollama-linux-arm64.tgz 链接: https://pan.baidu.com/s/1tx_OPpl-8O2HJfXlP4tXTg?pwdffwx 提取码: ffwx --来自百度网盘超级会员v4的分享 …

2024年团体程序设计天梯赛

比赛链接 https://ac.nowcoder.com/acm/contest/80027 A&#xff1a; JMU-1 考察搜索的能力百度一下可知&#xff0c;2024 年天梯赛总决赛的比赛日为4 月 20日 参考代码 //2024 年天梯赛总决赛的比赛日为4 月 20日 void solve(){//A20-7cout<<"H\n"; } B&…

基于CMMI的软件质量管理体系深度解析

核心理念&#xff1a;CMMI&#xff08;Capability Maturity Model Integration&#xff09;是通过过程改进驱动质量提升的体系化框架&#xff0c;其本质是建立可量化、可重复、可优化的工程管理能力一、CMMI体系框架与演进 #mermaid-svg-MdDBl2P8fSHYDHMc {font-family:"t…

2025年渗透测试面试题总结-2025年HW(护网面试) 44(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2025年HW(护网面试) 44 1. SQL注入常用函数 2. SQLMap爆当前库名参数 3. Nmap探测系统参数 4. Nmap小写 …

【操作系统-Day 5】通往内核的唯一桥梁:系统调用 (System Call)

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

完整 Spring Boot + Vue 登录系统

项目名称&#xff1a;springboot-vue-login-template✅ 功能一览模块功能后端Spring Boot MyBatis Plus JWT Shiro数据库MySQL 用户表前端Vue3 Element Plus Axios登录流程用户名/密码验证 → 返回 Token → 存储 LocalStorage权限控制拦截器校验 Token Shiro 角色权限跨…

Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)

1. Redis 简介Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;常用于缓存、消息队列、会话存储等应用场景。1.1 特征丰富…

C/C++数据结构之多维数组

概述多维数组&#xff0c;实际上就是“数组的数组”。最常见的是二维数组&#xff0c;就像一个表格&#xff0c;拥有行和列。而三维数组则可以想象为多个这样的表格堆叠起来形成的一个立方体。依此类推&#xff0c;我们可以构建四维、五维甚至更高维度的数组。多维数组主要用于…

[Rust 基础课程]选一个合适的 Rust 编辑器

市面上现在有很多编辑器都可以开发 Rust&#xff0c;很多都是以安装 Rust 插件的形式来对 Rust 做支持&#xff0c;本课程使用 RustRover&#xff0c;如果你喜欢其他的编辑器&#xff0c;可以自己捣鼓下。 RustRover https://www.jetbrains.com/rust/ jetbrains 专门对于 Ru…

【零基础学AI】第37讲:提示词工程(Prompt Engineering)

本节课你将学到 理解提示词工程的核心原理 掌握5种实用的Prompt设计模式 学会优化提示词的评估方法 实现一个智能问答系统优化案例 开始之前 环境要求 Python 3.8安装包&#xff1a;pip install openai tiktokenOpenAI API密钥&#xff08;免费注册&#xff1a;https://plat…

莫兰迪色系工作总结汇报PPT模版分享

莫兰迪色工作总结PPT模版&#xff0c;莫兰迪调色板PPT模版&#xff0c;莫兰迪色系高级简约PPT模版&#xff0c;莫兰迪色系工作汇报&#xff0c;莫兰迪总结汇报模版 莫兰迪色系工作总结汇报PPT模版分享&#xff1a;https://pan.quark.cn/s/35bcaa03c837

uniapp的app项目,某个页面长时间无操作,返回首页

最开始想做成一个公共的&#xff0c;完全提取出来的一个组件&#xff0c;组件设置背景透明&#xff0c;到时候哪个页面需要&#xff0c;直接引入组件就可以了&#xff0c;所以最开始做的是一个vue的组件&#xff0c;在组件中&#xff0c;监听页面的touchstart&#xff0c;但是这…

【实证分析】上市公司绿色战略数据集(2000-2023年)

数据简介&#xff1a;绿色战略是指企业根据其所处的外部环境&#xff08;包括“绿色浪潮”等环保趋势&#xff09;和企业自身的经营条件&#xff0c;为实现企业生存与发展质量的持续提升&#xff0c;而对企业生产经营活动进行绿色化改造的总体规划。这包括制定企业绿色可持续发…