事實(shí)表
在多維數(shù)據(jù)倉庫中,保存度量值的詳細(xì)值或事實(shí)的表稱為“事實(shí)表”。一個按照州、產(chǎn)品和月份劃分的銷售量和銷售額存儲的事實(shí)表有5個列,概念上與下面的示例類似。?
|
Sate |
Product |
Mouth |
Units |
Dollars |
|
WA |
Mountain-100 |
January |
3 |
7.95 |
|
WA |
Cable Lock |
January |
4 |
7.32 |
|
OR |
Mountain-100 |
January |
3 |
7.95 |
|
OR |
Cable Lock |
January |
4 |
7.32 |
|
WA |
Mountain-100 |
February |
16 |
42.40 |
在這些事實(shí)表的示例數(shù)據(jù)行中,前3個列——州、產(chǎn)品和月份——為鍵值列。剩下的兩個列——銷售額和銷售量——為度量值。事實(shí)表中的每個列通常要么是鍵值列,要么是度量值列,但也可能包含其他參考目的的列——例如采購訂單號或者發(fā)票號。
事實(shí)表中,每個度量值都有一個列。不同事實(shí)表將有不同的度量值。一個銷售數(shù)據(jù)倉庫可能含有這兩個度量值列:銷售額和銷售量。一個現(xiàn)場信息數(shù)據(jù)倉庫可能包含3個度量值列:總量、分鐘數(shù)和瑕疵數(shù)。創(chuàng)建報表時,可以認(rèn)為度量值形成了一個額外的維度。即可以把銷售額和銷售量作為并列的列標(biāo)題,或者也可以把它們作為行標(biāo)題。然而在事實(shí)表中,每個度量值都作為一個單獨(dú)的列顯示。
事實(shí)表數(shù)據(jù)行中包含了您想從中獲取度量值信息的最底層級別的明細(xì)。換句話說,事實(shí)表中對每個維度的最詳細(xì)的項(xiàng)目成員都有數(shù)據(jù)行。如果有使用其他維度的度量,只要為那些度量和維度創(chuàng)建另一個事實(shí)表即可。數(shù)據(jù)倉庫中可能包含擁有不同度量值和維度的不同事實(shí)表。
前面表格中的示例數(shù)據(jù)行顯示了事實(shí)表的概念布局。事實(shí)是事實(shí)表幾乎總會使用一個整數(shù)值來表示(維度)成員,而不使用描述性的名稱。因?yàn)槭聦?shí)表往往會包含數(shù)量多得無法想象的數(shù)據(jù)行——在一個中等大小的數(shù)據(jù)倉庫中,事實(shí)表動輒包含上百萬行數(shù)據(jù)——使用整數(shù)鍵值可以有效地減小事實(shí)表的大小。事實(shí)表真正的布局如下所示。
|
STATE_ID |
PROD_ID |
Month |
Sales_Units |
Sales_Dollars |
|
1 |
347 |
1 |
3 |
7.95 |
|
1 |
447 |
1 |
4 |
7.32 |
|
2 |
347 |
1 |
3 |
7.95 |
|
2 |
447 |
1 |
4 |
7.32 |
|
1 |
347 |
2 |
16 |
42.40 |
在事實(shí)表中使用整數(shù)鍵值時,維度成員的名稱需要放到另一種表中——也就是維度表。通常,事實(shí)表中的每個維度都有一個維度表。
事實(shí)表前綴為Fact。
歸納:
每個數(shù)據(jù)倉庫都包含一個或者多個事實(shí)數(shù)據(jù)表。事實(shí)數(shù)據(jù)表可能包含業(yè)務(wù)銷售數(shù)據(jù),如現(xiàn)金登記事務(wù)。
所產(chǎn)生的數(shù)據(jù),事實(shí)數(shù)據(jù)表通常包含大量的行。事實(shí)數(shù)據(jù)表的主要特點(diǎn)是包含數(shù)字?jǐn)?shù)據(jù)(事實(shí)),并且這些數(shù)字信息可以匯總,以提供有關(guān)單位作為歷史的數(shù)據(jù),每個事實(shí)數(shù)據(jù)表包含一個由多個部分組成的索引,該索引包含作為外鍵的相關(guān)性緯度表的主鍵,而維度表包含事實(shí)記錄的特性。事實(shí)數(shù)據(jù)表不應(yīng)該包含描述性的信息,也不應(yīng)該包含除數(shù)字度量字段及使事實(shí)與緯度表中對應(yīng)項(xiàng)的相關(guān)索引字段之外的任何數(shù)據(jù)。
包含在事實(shí)數(shù)據(jù)表中的“度量值”有兩中:一種是可以累計(jì)的度量值,另一種是非累計(jì)的度量值。最有用的度量值是可累計(jì)的度量值,其累計(jì)起來的數(shù)字是非常有意義的。用戶可以通過累計(jì)度量值獲得匯總信息,例如。可以匯總具體時間段內(nèi)一組商店的特定商品的銷售情況。非累計(jì)的度量值也可以用于事實(shí)數(shù)據(jù)表,單匯總結(jié)果一般是沒有意義的,例如,在一座大廈的不同位置測量溫度時,如果將大廈中所有不同位置的溫度累加是沒有意義的,但是求平均值是有意義的。
一般來說,一個事實(shí)數(shù)據(jù)表都要和一個或多個緯度表相關(guān)聯(lián),用戶在利用事實(shí)數(shù)據(jù)表創(chuàng)建多維數(shù)據(jù)集時,可以使用一個或多個維度表。
維度表
維度表包含了維度的每個成員的特定名稱。維度成員的名稱稱為“屬性”(Attribute)。假設(shè)Product維度中有3種產(chǎn)品,那么維度表將如下所示。
|
PROD_ID |
Product_Name |
|
347 |
Mountain-100 |
|
339 |
Road-650 |
|
447 |
Cable Lock |
產(chǎn)品名稱是產(chǎn)品成員的一個屬性。因?yàn)榫S度表中的Product ID與事實(shí)表中的Product ID相匹配,稱為“鍵屬性”。因?yàn)槊總€Product ID只有一個Product Name,顯示時用名稱來替代整數(shù)值,所以它仍然被認(rèn)為是鍵屬性的一部分。
在數(shù)據(jù)倉庫中,維度表中的鍵屬性必須為維度的每個成員包含一個對應(yīng)的唯一值。用關(guān)系型數(shù)據(jù)庫術(shù)語描述就是,鍵屬性稱為主鍵列。每個維度表中的主鍵值都與任何相關(guān)的事實(shí)表中的鍵值相關(guān)。在維度表中出現(xiàn)一次的每個鍵值都會在事實(shí)表中出現(xiàn)多次。例如Mountain-100的Product ID 347只在一個維度表數(shù)據(jù)行中出現(xiàn),但它會出現(xiàn)在多個事實(shí)表數(shù)據(jù)行中。這稱為一對多關(guān)系。在事實(shí)表中,鍵值列(它是一對多關(guān)系的“多”的一方)稱為外鍵列。關(guān)系型數(shù)據(jù)庫使用匹配的主鍵列(在維度表中)和外鍵列(在事實(shí)表中)值來聯(lián)接維度表到事實(shí)表。
把維度信息移動到一個單獨(dú)的表中,除了使得事實(shí)表更小外,還有額外的優(yōu)點(diǎn)——可以為每個維度成員添加額外的信息。例如,維度表可能為每個產(chǎn)品添加種類(Category)信息,如下所示。
|
PROD_ID |
Product_Name |
Category |
|
347 |
Mountain-100 |
Bikes |
|
339 |
Road-650 |
Bikes |
|
447 |
Cable Lock |
Accessories |
現(xiàn)在種類是產(chǎn)品的另一個屬性。如果知道Product ID,不但可以推斷出Product Name,而且可以推斷出Category。鍵屬性的名稱可能是唯一的——因?yàn)槊總€鍵只有一個名稱,但其他屬性不需要是唯一的,例如Category屬性可能會出現(xiàn)好幾次。這樣一來,便可以創(chuàng)建按照產(chǎn)品和類別對事實(shí)表信息進(jìn)行分組的報表。
除了名稱外,維度表可以包含許多其他的屬性。本質(zhì)上,每個屬性都對應(yīng)于維度表中的一個列。下面是帶有其他額外屬性的只有3個成員的Product維度表的示例。
|
PROD_ID |
Product_Name |
Category |
Color |
Size |
Price |
|
347 |
Mountain-100 |
Bikes |
Black |
44 |
782.99 |
|
339 |
Road-650 |
Bikes |
Silver |
48 |
3399.99 |
|
447 |
Cable Lock |
Accessories |
NA |
NA |
25.00 |
維度屬性可以是可分組的,也可以是不可分組的。換句話就是,您是否見過按照哪個屬性來分組度量值的報表?在我們的示例中,Category、Size和Color全都是可分組的屬性。由此自然會聯(lián)想到可能在某個報表中按照顏色、大小或種類來分組銷售額。但Price看起來不像是可分組的屬性——至少它本身不是。在報表中可能會有一個更有意義的其他屬性——例如Price Group,但價格本身變化太大,導(dǎo)致在報表上分組意義不大。同樣地,按照Product Description屬性在報表上進(jìn)行分組意義也不大。在一個Customer維度中,City、Country、Gender和Marital Status都是可以在報表上按照它們進(jìn)行有意義分組的屬性,但Street Address或Nickname都應(yīng)當(dāng)是不可分組的。不可分組的屬性通常稱為成員屬性(member property)。
某些可分組的屬性可以組合起來創(chuàng)建一個自然層次結(jié)構(gòu)(natural hierarchy)。例如假設(shè)Product有Category和Subcategory屬性,在多數(shù)情況下,單個產(chǎn)品只會屬于單個Subcategory,并且單個Subcategory只會屬于單個Category。這將形成一個自然層次結(jié)構(gòu)。在報表中,可能會顯示Categories,然后允許用戶從某個Category鉆取到Subcategories,以及最終鉆取到Products。
層次結(jié)構(gòu)——或者說鉆取路徑——不一定要是自然的(例如,每個低層次的成員會決定下一個高層次的成員)。例如,您可能會創(chuàng)建一個按照Color分組產(chǎn)品的報表,但允許用戶根據(jù)每個Color鉆取到每個不同的Size。因?yàn)閳蟊淼你@取能力,Color和Size形成了一個層次結(jié)構(gòu),但是根據(jù)Size卻沒有任何信息可以用來斷定產(chǎn)品的Color將是什么。這是一個層次結(jié)構(gòu),但不是一個自然層次結(jié)構(gòu)——但也不是說它是個非自然層次結(jié)構(gòu)。Color和Size形成一個層次結(jié)構(gòu)并沒有什么不對,它只是這樣一個簡單的事實(shí):相同的Size可以出現(xiàn)在多個Color中。
維度表前綴為Dim。
歸納:
維度表可以看作是用戶來分析數(shù)據(jù)的窗口,緯度表中包含事實(shí)數(shù)據(jù)表中事實(shí)記錄的特性,有些特性提供描述性信息,有些特性指定如何匯總事實(shí)數(shù)據(jù)表數(shù)據(jù),以便為分析者提供有用的信息,維度表包含幫助匯總數(shù)據(jù)的特性的層次結(jié)構(gòu)。例如,包含產(chǎn)品信息的維度表通常包含將產(chǎn)品分為食品、飲料、非消費(fèi)品等若干類的層次結(jié)構(gòu),這些產(chǎn)品中的每一類進(jìn)一步多次細(xì)分,直到各產(chǎn)品達(dá)到最低級別。
在維度表中,每個表都包含獨(dú)立于其他維度表的事實(shí) 特性,例如,客戶維度表包含有關(guān)客戶的數(shù)據(jù)。維度表中的列字段可以將信息分為不同層次的結(jié)構(gòu)級。
結(jié)論:
1、事實(shí)表就是你要關(guān)注的內(nèi)容;
2、維度表就是你觀察該事務(wù)的角度,是從哪個角度去觀察這個內(nèi)容的。
例如,某地區(qū)商品的銷量,是從地區(qū)這個角度觀察商品銷量的。事實(shí)表就是銷量表,維度表就是地區(qū)表。
聚合表
數(shù)據(jù)是按照最詳細(xì)的格式存儲在事實(shí)表中,各種報表可以充分利用這些數(shù)據(jù)。一般的查詢語句在查詢事實(shí)表時,一次操作經(jīng)常涉及成千上萬條記錄,但是通過使用匯總、平均、極值等聚合技術(shù)可以大大降低數(shù)據(jù)的查詢數(shù)量。因此,來自事實(shí)表中的底層數(shù)據(jù)應(yīng)該事先經(jīng)過聚合存儲在中間表中。中間表存儲了聚合信息,所以被稱為聚合表,這種處理過程被稱為聚合過程。
《BI那點(diǎn)兒事—數(shù)據(jù)的藝術(shù)》理解維度數(shù)據(jù)倉庫——事實(shí)表、維度表、聚合表
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

