全量表
全量表沒有分區,表中的數據是前一天的所有數據,比如說今天是24號,那么全量表里面擁有的數據是23號的所有數據,每次往全量表里面寫數據都會覆蓋之前的數據,所以全量表不能記錄歷史的數據情況,只有截止到當前最新的、全量的數據。
快照表
那么要能查到歷史數據情況又該怎么辦呢?這個時候快照表就派上用途了,快照表是有時間分區的,每個分區里面的數據都是分區時間對應的前一天的所有全量數據,比如說當前數據表有3個分區,24號,25號,26號。其中,24號分區里面的數據就是從歷史到23號的所有數據,25號分區里面的數據就是從歷史到24號的所有數據,以此類推。
但是這樣也有一個問題,就是數據量大的時候,其實每個分區都存儲了許多重復的數據,非常的浪費存儲空間。
於是乎,拉鏈表就出來了。
在介紹拉鏈表之前,我們先介紹一下增量表。
增量表
增量表,就是記錄每天新增數據的表,比如說,從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。
維度表
維度表可以看成是用戶用來分析一個事實的窗口,它里面的數據應該是對事實的各個方面描述,比如時間維度表,它里面的數據就是一些日,周,月,季,年,日期等數據,維度表只能是事實表的一個分析角度。
實體表
實體表就是一個實際對象的表,實體表它放的數據一定是一條條客觀存在的事物數據,比如說設備 ,它就是客觀存在的,所以可以將其設計一個實體表。
事實表
事實表其實質就是通過各種維度和一些指標值得組合來確定一個事實的,比如通過時間維度,地域組織維度,指標值可以去確定在某時某地的一些指標值怎么樣的事實。事實表的每一條數據都是幾條維度表的數據和指標值交匯而得到的。
原文鏈接:https://blog.csdn.net/a6822342/article/details/100050548