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

這一篇文章我們的目的是搞懂這四種表的概念,閒話不多說,直接看文字。

 

全量表

全量表沒有分區,表中的數據是前一天的所有數據,比如說今天是24號,那麼全量表裏面擁有的數據是23號的所有數據,每次往全量表裏面寫數據都會覆蓋之前的數據,所以全量表不能記錄歷史的數據情況,只有截止到當前最新的、全量的數據。

快照表

那麼要能查到歷史數據情況又該怎麼辦呢?這個時候快照表就派上用途了,快照表是有時間分區的,每個分區裏面的數據都是分區時間對應的前一天的所有全量數據,比如說當前數據表有3個分區,24號,25號,26號。其中,24號分區裏面的數據就是從歷史到23號的所有數據,25號分區裏面的數據就是從歷史到24號的所有數據,以此類推。

這樣的話,我在26號的時候想看當時24號的數據情況,就直接去找對應快照表中25號分區的數據就可以了。

但是這樣也有一個問題,就是數據量大的時候,其實每個分區都存儲了許多重複的數據,非常的浪費存儲空間。

於是乎,拉鍊表就出來了。

在介紹拉鍊表之前,我們先介紹一下增量表。

增量表

增量表,就是記錄每天新增數據的表,比如說,從24號到25號新增了那些數據,改變了哪些數據,這些都會存儲在增量表的25號分區裏面。上面說的快照表的25號分區和24號分區(都是t+1,實際時間分別對應26號和25號),它兩的數據相減就是實際時間25號到26號有變化的、增加的數據,也就相當於增量表裏面25號分區的數據。

拉鍊表

拉鍊表,它是一種維護歷史狀態,以及最新狀態數據的一種表。拉鍊表也是分區表,有些不變的數據或者是已經達到狀態終點的數據就會把它放在分區裏面,分區字段一般爲開始時間:start_date和結束時間:end_date。一般在該天有效的數據,它的end_date是大於等於該天的日期的。獲取某一天全量的數據,可以通過表中的start_date和end_date來做篩選,選出固定某一天的數據。例如我想取截止到20190813的全量數據,其where過濾條件就是where start_date<='20190813' and end_date>=20190813。

 

好了,關於四種表的概念介紹到這裏了,有說的不對的地方還請指出,互相進步。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章