數據倉庫企業最佳實踐系列之拉鍊表

程序員果汁兒 發佈 2022-11-30T11:43:36.039923+00:00

目錄:一、拉鍊表介紹二、拉鍊表使用場景三、真實企業案例(社招案例)四、相關面試題一、拉鍊表介紹拉鍊表是針對數據倉庫設計中表存儲數據的方式而定義的,顧名思義,所謂拉鏈,就是記錄歷史。記錄一個事物從開始,一直到當前狀態的所有變化的信息。

目錄:

一、拉鍊表介紹

二、拉鍊表使用場景

三、真實企業案例(社招案例)

四、相關面試題


一、拉鍊表介紹

拉鍊表是針對數據倉庫設計中表存儲數據的方式而定義的,顧名思義,所謂拉鏈,就是記錄歷史。記錄一個事物從開始,一直到當前狀態的所有變化的信息。


二、拉鍊表使用場景

我們在設計模型的時候會遇到一些情況:

1. 表中的部分欄位會被更新,如企微添加好友,歸因渠道。

2. 需要查看某一個時間點或者時間段的歷史快照信息,例如:查看某一個用戶在2022年的求職狀態。

3. 表中的記錄變化的比例和頻率不是很大比如,總共有5億的用戶,每天新增和發生變化的有100w左右,變化的比例占到很小。


三、實現過程(社招案例)

企業簡歷特權使用記錄,修改成拉鍊表,記錄歷史更新狀態

說明:data_dt 為分區時間,pre1day為 data_dt-1,ods為全量表

需要一張臨時表,用於存放中間過程

建表:

準備數據:

將數據插入:ods_test_test_business_da 的2022-10-22的分區中,按著拉鍊表的流程最後可以得到dwd_test_business_da 表2022-10-22的最原始的數據,record_start_date為create_date,record_end_date 為3000-12-31

插入 ods_test_test_business_da 分區為2022-10-23

1、新增直接取過來,未結束日期為3000-12-31

結果:

2. 更新則保留前一日數據,並將記錄結束日期記成更新日期,新記錄的開始日期為更新日期

3. 不變的記錄,取昨日數據

4. 刪除的數據則保留前一日數據,並將記錄結束日期記成更新日期

5. 拉鏈結束的數據直接拿過來

6. 得到最後的拉鍊表


四、相關面試題

什麼是拉鍊表,怎樣設計一張拉鍊表?

首先要說明拉鍊表是什麼,什麼業務場景下會使用,然後結合自己的業務細說,並解決了什麼問題。

關鍵字: