【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
英文地址,請注明出處:http://en.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;而對企業生產經營活動進行綠色化改造的總體規劃。這包括制定企業綠色可持續發…