數據倉庫常用表整理

數據倉庫常用表拉鍊表寬表等詳解

全量表:全量表沒有分區,表中的數據是前一天的所有數據,比如說今天是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。

寬表:從字面意義上講就是字段比較多的數據庫表。通常是指業務主題相關的指標、維度、屬性關聯在一起的一張數據庫表。由於把不同的內容都放在同一張表存儲,寬表已經不符合三範式的模型設計規範,隨之帶來的主要壞處就是數據的大量冗餘,與之相對應的好處就是查詢性能的提高與便捷。這種寬表的設計廣泛應用於數據挖掘模型訓練前的數據準備,通過把相關字段放在同一張表中,可以大大提高數據挖掘模型訓練過程中迭代計算時的效率問題。(一句話,空間換時間,便於訓練迭代、減少表關聯數量,修改少量數據時不需要改多張表)

窄表:嚴格按照數據庫設計三範式。儘量減少數據冗餘,但是缺點是修改一個數據可能需要修改多張表。

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