主要總結一下實現過程:
分析:拉鍊表就是用來儲存變化的資料的,每乙份資料都有對應的有效期,我們需要進行的操作就是將變動的資料進行新增,同時將變動對應的前一條資料的有效期進行變更。
在這之前需要熟悉一下需要用到的表:
表1:訂單表(記錄原始的資料)
表2:增量資料表(記錄每日變更的資料)
表3:歷史拉鍊表(我們要得到的就是這張表)
表4:臨時歷史拉鍊表(臨時表,處理好之後將資料覆蓋到歷史拉鍊表中)
總結過程:
初始化:
-1、從訂單表中完整獲取第一批資料,因為沒有歷史資料,可以直接初始化到增量資料表中
-2、將增量資料表中的資料直接放入歷史拉鍊表中,有效期為 當前 -> 永久。
增量:1、將當天變動的資料集a放到增量資料表中(使用createdate & modifydate 進行篩選)
2、將歷史拉鍊表跟資料集a進行左連線,關聯上的資料說明已經出現變動,將這部分資料的截止時間進行更新,最為資料集h,這部分相當於歷史資料了
3、將增量資料表中的資料新增有效期,有效期為 當前 -> 永久,作為資料集t,這部分相當於當天變動的資料。
4、將資料集h 和 資料集t 進行合併,放入臨時歷史拉鍊表
5、最後將臨時歷史拉鍊表覆蓋歷史拉鍊表
以上就是乙個增量的過程,需要注意的是如果乙份資料當天多次,我能想到有兩種解決方案:
方案1:在取增量資料的時候取最新的一次,這種方案比較廣泛吧。
方案2:需要在第三步整理資料集t的時候進行處理,也就是篩選出並不是最新資料的集合,將這部分資料的有效期進行填充,不過我覺得這種方法對於輸出快照不太友好。
歷史拉鍊表
在資料倉儲的資料模型設計過程中,經常會遇到這樣的需求 1.資料量比較大 2.表中的部分欄位會被update,如使用者的位址,產品的描述資訊,訂單的狀態等等 3.需要檢視某乙個時間點或者時間段的歷史快照資訊,比如,檢視某乙個訂單在歷史某乙個時間點的狀態,比如,檢視某乙個使用者在過去某一段時間內,更新過...
拉鍊表設計
一 建立拉鍊表 1 假如首日是2022 02 24,首先將資料從ods層載入到dim層,分割槽日期和結束日期都為9999 00 00 2 第二日2022 02 25,一部分使用者新增變化,需要把新增的和變化的裝載到dim層,分割槽結束日期是9999分割槽,但要注意9999分割槽有一部分過期資料 過期...
拉鍊表的實現原理與查詢方式
author spinach ghb link 實現原理 查詢方式及總結 針對資料倉儲設計中表儲存資料的方式而定義的,即記錄歷史。記錄乙個事物從開始,一直到當前狀態的所有變化的資訊。記錄生命週期 所以,任何一條記錄 行資料 必定在歷史上某天新生 start 並在其後的某一天死亡 end 那麼這個st...