在多維數(shù)據(jù)倉(cāng)庫(kù)中,保存度量值的詳細(xì)值或事實(shí)的表稱(chēng)為“事實(shí)表”。一個(gè)按照州、產(chǎn)品和月份劃分的銷(xiāo)售量和銷(xiāo)售額存儲(chǔ)的事實(shí)表有5個(gè)列,概念上與下面的示例類(lèi)似。
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個(gè)列——州、產(chǎn)品和月份——為鍵值列。剩下的兩個(gè)列——銷(xiāo)售額和銷(xiāo)售量——為度量值。事實(shí)表中的每個(gè)列通常要么是鍵值列,要么是度量值列,但也可能包含其他參考目的的列——例如采購(gòu)訂單號(hào)或者發(fā)票號(hào)。
事實(shí)表中,每個(gè)度量值都有一個(gè)列。不同事實(shí)表將有不同的度量值。一個(gè)銷(xiāo)售數(shù)據(jù)倉(cāng)庫(kù)可能含有這兩個(gè)度量值列:銷(xiāo)售額和銷(xiāo)售量。一個(gè)現(xiàn)場(chǎng)信息數(shù)據(jù)倉(cāng)庫(kù)可能包含3個(gè)度量值列:總量、分鐘數(shù)和瑕疵數(shù)。創(chuàng)建報(bào)表時(shí),可以認(rèn)為度量值形成了一個(gè)額外的維度。即可以把銷(xiāo)售額和銷(xiāo)售量作為并列的列標(biāo)題,或者也可以把它們作為行標(biāo)題。然而在事實(shí)表中,每個(gè)度量值都作為一個(gè)單獨(dú)的列顯示。
事實(shí)表數(shù)據(jù)行中包含了您想從中獲取度量值信息的最底層級(jí)別的明細(xì)。換句話說(shuō),事實(shí)表中對(duì)每個(gè)維度的最詳細(xì)的項(xiàng)目成員都有數(shù)據(jù)行。如果有使用其他維度的度量,只要為那些度量和維度創(chuàng)建另一個(gè)事實(shí)表即可。數(shù)據(jù)倉(cāng)庫(kù)中可能包含擁有不同度量值和維度的不同事實(shí)表。
前面表格中的示例數(shù)據(jù)行顯示了事實(shí)表的概念布局。事實(shí)是事實(shí)表幾乎總會(huì)使用一個(gè)整數(shù)值來(lái)表示(維度)成員,而不使用描述性的名稱(chēng)。因?yàn)槭聦?shí)表往往會(huì)包含數(shù)量多得無(wú)法想象的數(shù)據(jù)行——在一個(gè)中等大小的數(shù)據(jù)倉(cāng)庫(kù)中,事實(shí)表動(dòng)輒包含上百萬(wàn)行數(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í),維度成員的名稱(chēng)需要放到另一種表中——也就是維度表。通常,事實(shí)表中的每個(gè)維度都有一個(gè)維度表。
事實(shí)表前綴為Fact。
歸納:
每個(gè)數(shù)據(jù)倉(cāng)庫(kù)都包含一個(gè)或者多個(gè)事實(shí)數(shù)據(jù)表。事實(shí)數(shù)據(jù)表可能包含業(yè)務(wù)銷(xiāo)售數(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ù),每個(gè)事實(shí)數(shù)據(jù)表包含一個(gè)由多個(gè)部分組成的索引,該索引包含作為外鍵的相關(guān)性緯度表的主鍵,而維度表包含事實(shí)記錄的特性。事實(shí)數(shù)據(jù)表不應(yīng)該包含描述性的信息,也不應(yīng)該包含除數(shù)字度量字段及使事實(shí)與緯度表中對(duì)應(yīng)項(xiàng)的相關(guān)索引字段之外的任何數(shù)據(jù)。
包含在事實(shí)數(shù)據(jù)表中的“度量值”有兩中:一種是可以累計(jì)的度量值,另一種是非累計(jì)的度量值。最有用的度量值是可累計(jì)的度量值,其累計(jì)起來(lái)的數(shù)字是非常有意義的。用戶可以通過(guò)累計(jì)度量值獲得匯總信息,例如。可以匯總具體時(shí)間段內(nèi)一組商店的特定商品的銷(xiāo)售情況。非累計(jì)的度量值也可以用于事實(shí)數(shù)據(jù)表,單匯總結(jié)果一般是沒(méi)有意義的,例如,在一座大廈的不同位置測(cè)量溫度時(shí),如果將大廈中所有不同位置的溫度累加是沒(méi)有意義的,但是求平均值是有意義的。
一般來(lái)說(shuō),一個(gè)事實(shí)數(shù)據(jù)表都要和一個(gè)或多個(gè)緯度表相關(guān)聯(lián),用戶在利用事實(shí)數(shù)據(jù)表創(chuàng)建多維數(shù)據(jù)集時(shí),可以使用一個(gè)或多個(gè)維度表。
維度表維度表包含了維度的每個(gè)成員的特定名稱(chēng)。維度成員的名稱(chēng)稱(chēng)為“屬性”(Attribute)。假設(shè)Product維度中有3種產(chǎn)品,那么維度表將如下所示。
PROD_ID | Product_Name |
347 | Mountain-100 |
339 | Road-650 |
447 | Cable Lock |
產(chǎn)品名稱(chēng)是產(chǎn)品成員的一個(gè)屬性。因?yàn)榫S度表中的Product ID與事實(shí)表中的Product ID相匹配,稱(chēng)為“鍵屬性”。因?yàn)槊總€(gè)Product ID只有一個(gè)Product Name,顯示時(shí)用名稱(chēng)來(lái)替代整數(shù)值,所以它仍然被認(rèn)為是鍵屬性的一部分。
在數(shù)據(jù)倉(cāng)庫(kù)中,維度表中的鍵屬性必須為維度的每個(gè)成員包含一個(gè)對(duì)應(yīng)的唯一值。用關(guān)系型數(shù)據(jù)庫(kù)術(shù)語(yǔ)描述就是,鍵屬性稱(chēng)為主鍵列。每個(gè)維度表中的主鍵值都與任何相關(guān)的事實(shí)表中的鍵值相關(guān)。在維度表中出現(xiàn)一次的每個(gè)鍵值都會(huì)在事實(shí)表中出現(xiàn)多次。例如Mountain-100的Product ID 347只在一個(gè)維度表數(shù)據(jù)行中出現(xiàn),但它會(huì)出現(xiàn)在多個(gè)事實(shí)表數(shù)據(jù)行中。這稱(chēng)為一對(duì)多關(guān)系。在事實(shí)表中,鍵值列(它是一對(duì)多關(guān)系的“多”的一方)稱(chēng)為外鍵列。關(guān)系型數(shù)據(jù)庫(kù)使用匹配的主鍵列(在維度表中)和外鍵列(在事實(shí)表中)值來(lái)聯(lián)接維度表到事實(shí)表。
把維度信息移動(dòng)到一個(gè)單獨(dú)的表中,除了使得事實(shí)表更小外,還有額外的優(yōu)點(diǎn)——可以為每個(gè)維度成員添加額外的信息。例如,維度表可能為每個(gè)產(chǎn)品添加種類(lèi)(Category)信息,如下所示。
PROD_ID | Product_Name | Category |
347 | Mountain-100 | Bikes |
339 | Road-650 | Bikes |
447 | Cable Lock | accessories |
現(xiàn)在種類(lèi)是產(chǎn)品的另一個(gè)屬性。如果知道Product ID,不但可以推斷出Product Name,而且可以推斷出Category。鍵屬性的名稱(chēng)可能是唯一的——因?yàn)槊總€(gè)鍵只有一個(gè)名稱(chēng),但其他屬性不需要是唯一的,例如Category屬性可能會(huì)出現(xiàn)好幾次。這樣一來(lái),便可以創(chuàng)建按照產(chǎn)品和類(lèi)別對(duì)事實(shí)表信息進(jìn)行分組的報(bào)表。
除了名稱(chēng)外,維度表可以包含許多其他的屬性。本質(zhì)上,每個(gè)屬性都對(duì)應(yīng)于維度表中的一個(gè)列。下面是帶有其他額外屬性的只有3個(gè)成員的Product維度表的示例。