事實表分成三種:事務事實表、周期快照事實表、累計快照事實表
事務事實表
官方定義是:發生在某個時間點上的一個事件。比如以訂單為例:下單是一個事實、付款是一個事實、退款是一個事實,所有事實的累計就是事務事實表
周期快照事實表
如果需要對某一天或者某個月的數據進行分析,那么可以使用周期快照事實表,比如:以天舉例,財務報表一般都是周期快照事實表,它的最細粒度主鍵就是:日期+訂單
累計快照事實表
累計快照表,具有確定的開始和結束事件,並且記錄關鍵事件或者過程的里程碑,它因此包含了很多日期的外鍵
三種事實表的區別

在維度建模的數據倉庫中,事實表是指其中保存了大量業務度量數據的表。事實表中的度量值一般稱為事實。在事實表中最有用的事實就是數字類型的事實和可加類型的事實。事實表的粒度決定了數據倉庫中數據的詳細程度。
一般來說,以粒度作為化分依據,主要有三種事實表,分別是事務粒度事實表(Transaction Grain Fact Table),周期快照粒度事實表(Periodic Snapshot Grain Fact Table)和累積快照粒度事實表(Accumulating Snapshot Grain Fact Table)。
事務粒度事實表中的一條記錄代表了業務系統中的一個事件。事務出現以后,就會在事實中出現一條記錄。事務粒度事實表也稱為原子粒度。典型 的例子是銷售單分列項事實表。
周期快照粒度事實表用來記錄有規律的,可預見時間間隔的業務累計數據。通常的時間間隔可以是每天、每周或者每月。典型的例子是庫存日快照事實表。
累積快照事實表一般用來涵蓋一個事務的生命周期內的不確定的時間跨度。典型的例子是KDT#2中描述的具有多個日期字段的發貨事實表。
通常來說,事務和快照是建模中的兩個非常重要的特點,將兩者相結合可以使模型建立的更完整。
從用途的不同來說,事實表可以分為三類,分別是原子事實表,聚集事實表和合並事實表。
原子事實表(Atom Fact Table)是保存最細粒度數據的事實表,也是數據倉庫中保存原子信息的場所。
聚集事實表(Aggregated Fact Table)是原子事實表上的匯總數據,也稱為匯總事實表。即新建立一個事實表,它的維度表是比原維度表要少,或者某些維度表是原維度表的子集,如用月份維度表代替日期維度表;事實數據是相應事實的匯總,即求和或求平均值等。在做數據遷移時,當相關的維度數據和事實數據發生變化時,聚集事實表需要做相應的刷新。物化視圖是實現聚集事實表的一種有效方式,可以設定刷新方式,具體功能由DBMS來實現。
合並事實表(Consolidated Fact Table)是指將位於不同事實表中處於相同粒度的事實進行組合建模而成的一種事實表。即新建立一個事實表,它的維度是兩個或多個事實表的相同維度的集合;事實是幾個事實表中感興趣的事實。在Kimball的總線架構中,由合並事實表為主組成的合並數據集市稱為二級數據集市。合並事實表的粒度可以是原子粒度也可以是聚集粒度。在做數據遷移時,當相關的原子事實表的數據有改變時,合並事實表的數據需要重新刷新。合並事實表和交叉探察是兩個互補的操作。
聚集事實表和合並事實表的主要差別是合並事實表一般是從多個事實表合並而來。但是它們的差別不是絕對的,一個事實表既是聚集事實表又是合並事實表是很有可能的。因為一般合並事實表需要按相同的維度合並,所以很可能在做合並的同時需要進行聚集,即粒度變粗。
