數據倉庫:關於事實表的設計與實踐

一、前言

事實表 作爲數據倉庫維度建模的核心,緊緊圍繞着 業務過程 來設計,通過獲取描述業務過程的度量來表達業務過程,包含了引用的維度和與業務過程有關的度量。

事實表中一條記錄所表達的業務細節程度被稱爲 粒度

通常粒度可以通過兩種方式來表述:一種是維度屬性組合所表示的細節程度;一種是所表示的具體業務含義。

基於某個業務過程,需要創建事務事實表,需要填寫的信息遵循如下規範建議:

  1. 英文名:我們預設定了業務過程名作爲命名的一部分,因此候選部分用戶以下劃線連接的英文縮寫進一步表達邏輯模型的業務含義。

  2. 名稱:建議以相對完整的中文短語描述名稱,主要包括業務主體、業務過程,比如淘寶交易下單業務事實表。

描述:詳細描述數據範圍,以及表達的業務含義,一條記錄代表的數據業務描述。

二、設計方法

三、設計原則

3.1 事務事實表

事務事實表記錄的事務層面的事實,保存的是最原子的數據,也稱 “原子事實表”。事務事實表中的數據在事務事件發生後產生,數據的粒度通常是每個事務一條記錄。一旦事務被提交,事實表數據被插入,數據就不再進行更改,其更新方式爲增量更新。

事務事實表的日期維度記錄的是事務發生的日期,它記錄的事實是事務活動的內容。用戶可以通過事務事實表對事務行爲進行特別詳細的分析。

通過事務事實表,還可以建立聚集事實表,爲用戶提供高性能的分析。

● 設計案例

● 單事務 & 多事務表區別

3.2 週期快照事實表

週期快照事實表以具有規律性的、可預見的時間間隔來記錄事實,時間間隔如每天、每月、每年等等。典型的例子如:銷售日快照表、庫存日快照表等。

週期快照事實表的粒度是每個時間段一條記錄,通常比事務事實表的粒度要粗,是在事務事實表之上建立的聚集表。 週期快照事實表的維度個數比事務事實表要少,但是記錄的事實要比事務事實表多。

週期快照事實表的日期維度通常是記錄時間段的終止日,記錄的事實是這個時間段內一些聚集事實值。事實表的數據一旦插入即不能更改,其更新方式爲增量更新。

3.3 累積快照事實表

累積快照事實表和週期快照事實表有些相似之處,它們存儲的都是事務數據的快照信息。但是它們之間也有着很大的不同,週期快照事實表記錄的確定的週期的數據,而累積快照事實表記錄的不確定的週期的數據。

累積快照事實表代表的是完全覆蓋一個事務或產品的生命週期的時間跨度,它通常具有多個日期字段,用來記錄整個生命週期中的關鍵時間點。

另外,它還會有一個用於指示最後更新日期的附加日期字段。由於事實表中許多日期在首次加載時是不知道的,所以必須使用代理關鍵字來處理未定義的日期,而且這類事實表在數據加載完後,是可以對它進行更新的,來補充隨後知道的日期信息。

四、各種事實表區別

五、聚集事實表

聚集事實表是有派生指標按統計粒度組織的一系列模型,相同粒度的派生指標組織在一個聚集事實表裏,基於此邏輯表,用戶可以訪問所需要的指標。

5.1 設計過程

5.2 設計原則

5.3 設計案例

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/4fL2_reun2bERXt6l6epAQ