一、維表&事實表
- 說法一
以前一直對維度表, 事實表, 數據分析, BI等概念等有一些模糊. 這幾天的學習終于讓這些有了一些眉目了:
維度表示你要對數據進行分析時所用的一個量, 比如你要分析產品銷售情況, 你可以選擇按類別來進行分析,或按區域來分析. 這樣的按..分析就構成一個維度。前面的示例就可以有兩個維度:類型和區域。另外每個維度還可以有子維度(稱為屬性),例如類別可以有子類型,產品名等屬性。下面是兩個常見的維度表結構:
產品維度表:Prod_id, Product_Name, Category, Color, Size, Price
時間維度表:TimeKey, Season, Year, Month, Date
而事實表是數據聚合后依據某個維度生成的結果表。它的結構示例如下:
銷售事實表:Prod_id(引用產品維度表), TimeKey(引用時間維度表), SalesAmount(銷售總量,以貨幣計), Unit(銷售量)
上面的這些表就是存在于數據倉庫中的。從這里可以看出它有幾個特點:
- 維度表的冗余很大,主要是因為維度一般不大(相對于事實表來說的),而維度表的冗余可以使事實表節省很多空間。
- 事實表一般都很大,如果以普通方式查詢的話,得到結果一般發的時間都不是我們可以接受的。所以它一般要進行一些特殊處理。如SQL Server 2005就會對事實表進行如預生成處理等。
- 維度表的主鍵一般都取整型值的標志列類型,這樣也是為了節省事實表的存儲空間。
- 說法二
事實是各個維度的的交點,是對某個特定事件的度量。若干個一致的事實能夠被組合到一個公共的結構中就是事實表。
關于事實的描述性屬性能夠被組合到一個或多個公共的結構中就是維表。維表的本質是多維分析空間在某個角度的投影,多個維表共同建立一個多維的分析空間。
維表是用戶分析決策的角度,事實表是分析主體的量化體現。