mysql 增量表與全量表邏輯

2021-08-20 17:50:35 字數 717 閱讀 9209

源表: offer t1

(存在20161201~20180531的使用者相關資訊,分割槽為日分割槽p_date_no, 全量表, 每個分割槽會儲存前乙個分割槽中的所有資料內容)

目標表: xyzj_user t2

全量表更新邏輯:

第一步:從t1源表中,傳入(p_date_no等於昨天), 獲取表裡面所有使用者的id與其新**生效時間.

第二步: 將第一步得到的所有的使用者id, **生效時間往前推2個月(舊**)作為p_date_no, 作為子查詢條件去查t1源表,查出兩個月前這個使用者辦理舊**情況.

相當於全表查詢, 去每個分割槽裡面找這個使用者辦理的舊**的資訊

清空源表之後插入

增量表更新邏輯:

第一步:從t1源表中,傳入(p_date_no等於昨天), 獲取表裡面所有使用者的id與其新**生效時間。

第二步: 將第一步的結果對比源表, 將重複的去除了,留下昨天更新的使用者id,也就是昨天剛辦理新**的那批使用者。

第三步: 將(第二步得到的新辦理**使用者id), 加上p_date_no(昨天) 減去2個月, 去查t1源表,去看一下這些辦理新**的使用者2個月前辦理的舊**資訊。

全量表更新邏輯缺點:

1, 乙個表可以存在的分割槽的長度有限,太久遠的日期無法作為分割槽去查詢

第一步得到的使用者有可能是很久之前辦理的新**,用這個日期作為分割槽去查可能查不出來

2, 相當於全表更新查詢效率很慢

拉鍊表 增量表 全量表

記錄乙個事物從開始到當前狀態的所有的變化資訊。適用於 資料量非常大的表 表中的某些欄位會被更新操作 需要檢視歷史資訊 表的資料更新變化不是很大。拉鍊表中會定義資料的st date和end date。初始表a cust id account st dt end dt a100 20170801 299...

hive增量表和全量表 拉鍊表小結

記錄每條資訊的生命週期,一旦一條資訊的生命週期結束,就重新開始一條新紀錄,並把當前日期放入生效日期。如果當前日期至今有效,在結束日期放入乙個最大值,例如 9999 99 99 優勢 訂單1經歷了四個生命週期,如果每天增量同步資料,則一年有365條資料,而拉鍊表只會產生4條資料 通常要在原表的基礎上加...

什麼是全量表,增量表,快照表,拉鍊表?

這一篇文章我們的目的是搞懂這四種表的概念,閒話不多說,直接看文字。全量表 全量表沒有分割槽,表中的資料是前一天的所有資料,比如說今天是24號,那麼全量表裡面擁有的資料是23號的所有資料,每次往全量表裡面寫資料都會覆蓋之前的資料,所以全量表不能記錄歷史的資料情況,只有截止到當前最新的 全量的資料。快照...