天天看點

了解次元資料倉庫——事實表、次元表、聚合表

事實表

在多元資料倉庫中,儲存路徑成本的詳細值或事實的表稱為“事實表”。一個按照州、産品和月份劃分的銷售量和銷售額存儲的事實表有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

在這些事實表的示例資料行中,前3個列——州、産品和月份——為鍵值列。剩下的兩個列——銷售額和銷售量——為路徑成本。事實表中的每個列通常要麼是鍵值列,要麼是路徑成本列,但也可能包含其他參考目的的列——例如采購訂單号或者發票号。

事實表中,每個路徑成本都有一個列。不同僚實表将有不同的路徑成本。一個銷售資料倉庫可能含有這兩個路徑成本列:銷售額和銷售量。一個現場資訊資料倉庫可能包含3個路徑成本列:總量、分鐘數和瑕疵數。建立報表時,可以認為路徑成本形成了一個額外的次元。即可以把銷售額和銷售量作為并列的列标題,或者也可以把它們作為行标題。然而在事實表中,每個路徑成本都作為一個單獨的列顯示。

事實表資料行中包含了您想從中擷取路徑成本資訊的最底層級别的明細。換句話說,事實表中對每個次元的最詳細的項目成員都有資料行。如果有使用其他次元的度量,隻要為那些度量和次元建立另一個事實表即可。資料倉庫中可能包含擁有不同路徑成本和次元的不同僚實表。

前面表格中的示例資料行顯示了事實表的概念布局。事實是事實表幾乎總會使用一個整數值來表示(次元)成員,而不使用描述性的名稱。因為事實表往往會包含數量多得無法想象的資料行——在一個中等大小的資料倉庫中,事實表動辄包含上百萬行資料——使用整數鍵值可以有效地減小事實表的大小。事實表真正的布局如下所示。

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

在事實表中使用整數鍵值時,次元成員的名稱需要放到另一種表中——也就是次元表。通常,事實表中的每個次元都有一個次元表。

事實表字首為Fact。

歸納:

每個資料倉庫都包含一個或者多個事實資料表。事實資料表可能包含業務銷售資料,如現金登記事務。

所産生的資料,事實資料表通常包含大量的行。事實資料表的主要特點是包含數字資料(事實),并且這些數字資訊可以彙總,以提供有關機關作為曆史的資料,每個事實資料表包含一個由多個部分組成的索引,該索引包含作為外鍵的相關性緯度表的主鍵,而次元表包含事實記錄的特性。事實資料表不應該包含描述性的資訊,也不應該包含除數字度量字段及使事實與緯度表中對應項的相關索引字段之外的任何資料。

包含在事實資料表中的“路徑成本”有兩中:一種是可以累計的路徑成本,另一種是非累計的路徑成本。最有用的路徑成本是可累計的路徑成本,其累計起來的數字是非常有意義的。使用者可以通過累計路徑成本獲得彙總資訊,例如。可以彙總具體時間段内一組商店的特定商品的銷售情況。非累計的路徑成本也可以用于事實資料表,單彙總結果一般是沒有意義的,例如,在一座大廈的不同位置測量溫度時,如果将大廈中所有不同位置的溫度累加是沒有意義的,但是求平均值是有意義的。

一般來說,一個事實資料表都要和一個或多個緯度表相關聯,使用者在利用事實資料表建立多元資料集時,可以使用一個或多個次元表。

次元表

次元表包含了次元的每個成員的特定名稱。次元成員的名稱稱為“屬性”(Attribute)。假設Product次元中有3種産品,那麼次元表将如下所示。

PROD_ID Product_Name
347 Mountain-100
339 Road-650
447 Cable Lock

産品名稱是産品成員的一個屬性。因為次元表中的Product ID與事實表中的Product ID相比對,稱為“鍵屬性”。因為每個Product ID隻有一個Product Name,顯示時用名稱來替代整數值,是以它仍然被認為是鍵屬性的一部分。

在資料倉庫中,次元表中的鍵屬性必須為次元的每個成員包含一個對應的唯一值。用關系型資料庫術語描述就是,鍵屬性稱為主鍵列。每個次元表中的主鍵值都與任何相關的事實表中的鍵值相關。在次元表中出現一次的每個鍵值都會在事實表中出現多次。例如Mountain-100的Product ID 347隻在一個次元表資料行中出現,但它會出現在多個事實表資料行中。這稱為一對多關系。在事實表中,鍵值列(它是一對多關系的“多”的一方)稱為外鍵列。關系型資料庫使用比對的主鍵列(在次元表中)和外鍵列(在事實表中)值來聯接次元表到事實表。

把次元資訊移動到一個單獨的表中,除了使得事實表更小外,還有額外的優點——可以為每個次元成員添加額外的資訊。例如,次元表可能為每個産品添加種類(Category)資訊,如下所示。

PROD_ID Product_Name Category
347 Mountain-100 Bikes
339 Road-650 Bikes
447 Cable Lock Accessories

現在種類是産品的另一個屬性。如果知道Product ID,不但可以推斷出Product Name,而且可以推斷出Category。鍵屬性的名稱可能是唯一的——因為每個鍵隻有一個名稱,但其他屬性不需要是唯一的,例如Category屬性可能會出現好幾次。這樣一來,便可以建立按照産品和類别對事實表資訊進行分組的報表。

除了名稱外,次元表可以包含許多其他的屬性。本質上,每個屬性都對應于次元表中的一個列。下面是帶有其他額外屬性的隻有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全都是可分組的屬性。由此自然會聯想到可能在某個報表中按照顔色、大小或種類來分組銷售額。但Price看起來不像是可分組的屬性——至少它本身不是。在報表中可能會有一個更有意義的其他屬性——例如Price Group,但價格本身變化太大,導緻在報表上分組意義不大。同樣地,按照Product Description屬性在報表上進行分組意義也不大。在一個Customer次元中,City、Country、Gender和Marital Status都是可以在報表上按照它們進行有意義分組的屬性,但Street Address或Nickname都應當是不可分組的。不可分組的屬性通常稱為成員屬性(member property)。

某些可分組的屬性可以組合起來建立一個自然層次結構(natural hierarchy)。例如假設Product有Category和Subcategory屬性,在多數情況下,單個産品隻會屬于單個Subcategory,并且單個Subcategory隻會屬于單個Category。這将形成一個自然層次結構。在報表中,可能會顯示Categories,然後允許使用者從某個Category鑽取到Subcategories,以及最終鑽取到Products。

層次結構——或者說鑽取路徑——不一定要是自然的(例如,每個低層次的成員會決定下一個高層次的成員)。例如,您可能會建立一個按照Color分組産品的報表,但允許使用者根據每個Color鑽取到每個不同的Size。因為報表的鑽取能力,Color和Size形成了一個層次結構,但是根據Size卻沒有任何資訊可以用來斷定産品的Color将是什麼。這是一個層次結構,但不是一個自然層次結構——但也不是說它是個非自然層次結構。Color和Size形成一個層次結構并沒有什麼不對,它隻是這樣一個簡單的事實:相同的Size可以出現在多個Color中。

次元表字首為Dim。

歸納:

次元表可以看作是使用者來分析資料的視窗,緯度表中包含事實資料表中事實記錄的特性,有些特性提供描述性資訊,有些特性指定如何彙總事實資料表資料,以便為分析者提供有用的資訊,次元表包含幫助彙總資料的特性的層次結構。例如,包含産品資訊的次元表通常包含将産品分為食品、飲料、非消費品等若幹類的層次結構,這些産品中的每一類進一步多次細分,直到各産品達到最低級别。

在次元表中,每個表都包含獨立于其他次元表的事實 特性,例如,客戶次元表包含有關客戶的資料。次元表中的列字段可以将資訊分為不同層次的結構級。

結論:

1、事實表就是你要關注的内容;

2、次元表就是你觀察該事務的角度,是從哪個角度去觀察這個内容的。

例如,某地區商品的銷量,是從地區這個角度觀察商品銷量的。事實表就是銷量表,次元表就是地區表。

聚合表

資料是按照最詳細的格式存儲在事實表中,各種報表可以充分利用這些資料。一般的查詢語句在查詢事實表時,一次操作經常涉及成千上萬條記錄,但是通過使用彙總、平均、極值等聚合技術可以大大降低資料的查詢數量。是以,來自事實表中的底層資料應該事先經過聚合存儲在中間表中。中間表存儲了聚合資訊,是以被稱為聚合表,這種處理過程被稱為聚合過程。

繼續閱讀