資料倉庫之維度建模
阿新 • • 發佈:2020-10-12
1.資料倉庫建模目標
資料倉庫建模的目標是通過建模的方法更好的組織、儲存資料,以便在效能、成本、 效率和資料質量之間找到最佳平衡點。
訪問效能:能夠快速查詢所需的資料,減少資料 I/O;
資料成本:減少不必要的資料冗餘,實現計算結果資料複用,降低大資料系統中的資料 成本和計算成本;
使用效率:改善使用者應用體驗,提高使用資料的效率。
資料質量:整合所有資料來源的資料,改善資料統計口徑的不一致性,減少資料計算錯誤
上述的四點之間是存在衝突的,為了提高訪問效能,可能會提高資料冗餘(減少 Join操作), 這樣會降低計算成本,但是會導致資料儲存成本很高,並且由於資料的冗餘,會提高資料統 計口徑不一致的風險,我們的目的是通過合理的設計在效能、成本、效率和資料質量之間找 到平衡點。
2.維度模型基本概念
維度建模的理論由 Ralph Kimball 提出,他提出將資料倉庫中的表劃分為
事實表 和
維度表兩種型別,專門用於分析型資料庫、資料倉庫、資料集市建模的方法。資料集市可以理解為是一種"小型資料倉庫"。
2.1維度表(用來儲存該維的元資料,即維的描述資訊,包括維的層次及成員類別等)
維度表示你要對資料進行分析時所用的一個量,比如你要分析產品銷售情況, 你可以選擇按類別來進行分析,或按區域來分析。這樣的按..分析就構成一個維度。再比如"昨天下午我在星巴克花費200元喝了一杯卡布奇諾"。那麼以消費為主題進行分析,可從這段資訊中提取三個維度:時間維度(昨天下午),地點維度(星巴克), 商品維度(卡布奇諾)。通常來說維度表資訊比較固定,且資料量小。
2.2事實表(用來儲存事實的度量(measure)及指向各個維的外來鍵值):
表示對分析主題的度量。事實表包含了與各維度表相關聯的外來鍵,並通過JOIN方式與維度表關聯。事實表的度量通常是數值型別,且記錄數會不斷增加,表規模迅速增長。比如上面的消費例子,它的消費事實表結構示例如下:
消費事實表:Prod_id(引用商品維度表), TimeKey(引用時間維度表), Place_id(引用地點維度表), Unit(銷售量)。
總的說來,在資料倉庫中不需要嚴格遵守規範化設計原則。因為資料倉庫的主導功能就是面向分析,以查詢為主,不涉及資料更新操作。事實表的設計是以能夠正確記錄歷史資訊為準則,維度表的設計是以能夠以合適的角度來聚合主題內容為準則。
3.維度建模流程步驟
4.2 雪花模式
雪花模式(Snowflake Schema)是對星形模式的擴充套件。雪花模式的維度表可以擁有其他維度表的,雖然這種模型相比星型更規範一些,但是由於這種模型不太容易理解,維護成本比較高,而且效能方面需要關聯多層維表,效能也比星型模型要低。所以一般不是很常用。
4.3 星座模式
星座模式是星型模式延伸而來,星型模式是基於一張事實表的,而星座模式是基於多張事實表的,而且共享維度資訊。
前面介紹的兩種維度建模方法都是多維表對應單事實表,但在很多時候維度空間內的事實表不止一個,而一個維表也可能被多個事實表用到。在業務發展後期,絕大部分維度建模都採用的是星座模式。
5.維度建模例項
5.1 背景
某電商平臺,經常需要對訂單進行分析,以某寶的購物訂單為例,以維度建模的方式設計該模型。
5.2 事實表與維度表的劃分
事實表為訂單表、子訂單表,維度包括商品維度、使用者維度、商家維度、區域維度、時間維度。
5.3 事實表分析
訂單中包含的度量:商品件數、總金額、總減免金額;
描述性屬性:下單時間、付款時間、訂單狀態等;
子訂單包含度量:商品 ID、單價、減免金額;
描述性屬性:加入購物車時間、下單時間、付款時間、狀態;
5.4 維度表分析
商品維度:商品 ID、商品名稱、商品品類、單價、顏色、尺寸、生產商等;
使用者維度:使用者 ID、姓名、性別、生日、職業、信用值、收貨地址等;
時間維度:日期 ID、日期、周幾、是否週末、是否假期等;
區域維度:區域 ID,縣/區、縣/區 ID、市、市 ID、省、省 ID;
訂單表和子訂單表是兩張事實表,我們往往會避免事實表之間產生關係,因此會考慮讓子訂單表中有一定的資料冗餘,比如訂單表和訂單明細表都各自記錄著使用者 ID,區域 ID,時間 ID 等,這樣在查詢子訂單資訊時,就不用通過關聯訂單表來獲取上述資料了,但是子訂單表中仍會儲存訂單 ID 欄位。
- 確認業務過程;
- 確認粒度;
- 確定維度;
- 確定事實;