天天看點

資料倉庫中的次元(原創)

次元

次元在資料倉庫中主要對事實名額進行過濾和重新組織提供指導。可以将使用者對事實的查詢結果按照次元名額進行篩選,隻允許與次元名額相關的資料傳回給使用者。次元一般具有如下特性:可以形成一個次元體系,具備通路和過濾事實的能力,能夠提供相關的非标準實體,包括一個完整的次元體系編碼、關鍵詞以及相關的表示,可以映射到使用者所需要資訊的列。在實體資料倉庫中是較小的表,可以對前台使用者的應用程式進行資料填充,或引用紅花的資料倉庫分析。

次元層級

次元層級用來描述次元的各個層級。根據次元細節程度的不同,劃分資料在邏輯上的等級關系,例如,時間次元包括年、季度、月、日等層次,地區次元包括國家、省、市等層次。

次元的構成

次元的元素:次元的取值,即次元中的各個資料元素的取值。例如,地區次元中具體的成員有

英國、法國、德國。見下圖

資料倉庫中的次元(原創)

在設計過程中,來自資料源的數值資料字段到底是一個已度量的事實還是一個次元的屬性是比較容易混淆的一個問題。一般情況下,在每次抽樣時,如果數值資料字段的度量都改變,那麼它就是事實,如果它是某種東西的離散值描述,并幾乎保持為常數,那麼它就是維屬性。

次元的操作

1、鑽取:通過變換次元的層次,改變粒度的大小。它包括上鑽取(drill up)和向下鑽取(drill down)。向上鑽取是将細節資料向上追溯到最高層次的彙總資料。向下鑽取是将高層次的彙總資料深入到低層的細節資料中。

2、旋轉:通過變換次元的方向,重新安排維的位置,例如行列轉換。

3、切片和切塊:在一個或者多個次元上選取固定的值,分析其他次元上的度量資料。如果其他次元

剩餘兩個,則是切片;如果是3個則是切塊。

次元的分類

次元主要有4種類型,包括結構維、資訊維、分區維和分類維。結構維最為普通,它包含具有層次結構的成員;資訊維包含需要計算的屬性;分區維用于資訊的比較,如計劃銷售情況和實際銷售情況;分類維用于根據維的屬性來分組。此外,還有一些結構上比較特殊的維,如退化維和垃圾維等。

結構維

結構維表示在層次結構組成中的資訊量度。

下面是一些普通的結構維:客戶地理位置維這個維可提供一個根據客戶所在地進行歸類的層次結構。客戶維的典型例子是“customer_city”、“customer_state”和“custmer_country”。這個維通常用于檢視不同的地理位置在銷售、利潤和其他客戶度量方面的不同。

時間維可表明事件發生的時間。典型的時間維應該是年、月和日。

銷售人員地理位置維這個維可提供一個根據銷售人員所在地域進行歸類的層次結構。這個維通常用來檢視工作在不同地域的銷售人員的銷售情況和利潤等。

産品維出售的産品。這個層次結構可能包括“product_name”、“product_brand”、“product_category”和“product_department”。這個維用來檢視不同類别的産品的銷售利潤和其他名額。

所有這些結構維都包含他們所在層次結構的屬性。在結構維中層次是非常重要的,是以要在下面分别進行讨論。

資訊維

資訊維是計算字段建立的。使用者也許想通過銷售利潤了解所有産品的銷售總額。也許希望通過增加銷售來獲得豐厚的利潤。然而,如果某一款商品降價銷售,可能會發現銷售量雖然很大,而利潤卻很小或幾乎沒有利潤。從另一方面看,使用者可能希望通過提高某種産品的價格獲得較大利潤。這種産品可能具有較高的利潤空間,但銷量卻可能很低。是以,就利潤建立一個維,就銷售總量建立一個度量可以提供有用的産品資訊。

使用者可以對利潤進行2種計算。第1種是計算每種商品的平均利潤,這一方法很簡單,即用銷售價格減去銷售人員的開銷。知道了每種商品的平均利潤之後,還可以用它乘以每一天的銷售量進而得到每種商品每一天的總利潤。

真實世界在實際應用中,也許需要進行很多項這樣的計算,因為每一天的銷售價格和開銷都有很大差異。是以,需要一個包含每天的銷售價格和每天開銷情況的表。在使用者檢視的時間段上,每一天的銷售價格和每天的開銷情況都是有差別的,需要進行合計并求平均。某一天每種商品的利潤乘以這一天的銷售量等于當天的總利潤,標明時間段的利潤總和為各天的利潤之和。

建立了一個包括每種商品利潤和全部利潤的維,就有了一個資訊維。

分區維生成資訊表

以同一結構生成兩個或多個維時,要用到分區維。例如,使用者可能要建立用于預測銷售額和實際銷售額的兩個維。這兩個維的結構相同,隻是數值不同。另一個例子是時間維,每一年有相同的季度,相同的月和相同的天(除了閏年以外,而它不影響維)。在olap services中,将頻繁使用時間分區維來分割資料倉庫中的資料。

例如:為下列結構生成兩個同樣的維。

the_day

the_month

the_year

一個時間維中的資料是針對1998年的,而另一個時間維中的資料針對1999年的。建立事實表時,可以把度量分割為1998年的資料和1999年的資料,這将帶來許多益處。

分類維

分類維是通過對一個維的屬性值分組而建立的。如果客戶表中有家庭收入屬性,那麼,可能希望檢視客戶根據收入的購物方式。為此,可以生成一個含有家庭收入的分類維。

例如:如果有以下家庭每年收入的資料分組:0~20000元、20001~40000元、40001~60 000元、60 001~100 000元和大于100 001元。現在就可以考慮如何度量,例如,從這些分類中的每一個所購買産品的數量上來看他們的收入水準怎樣和購買量怎樣。另外一個可能的分類是家庭成員的性别和數量。

特殊維類型

特殊的維主要是在結構上差別于常見的次元,主要有退化維、垃圾維、一緻維和父子維。

退化維

當維表中的主鍵在事實表中沒有與外鍵關聯時,這樣的維稱為退化維,退化維的定義是ralph kimball提出來的。一般來說事實表中的外鍵都對應一個維表,維的資訊主要存放在維表中;但是退化維僅僅是事實表中的一列,這個維的相關資訊都在這一 列中,沒有維表與之相關聯。退化維與事實表并無關系,但用于一般在企業事件中跨越維之間查詢資料時,作為限制,也就是查詢限制條件(比如訂單号碼、出貨單編号等),就是常用退化維。以銷售分析而言,通常是把出貨日期作為事實的時間,而把訂單日期或需求日期等作為查詢條件,這裡,訂單日期或需求日期就是退化維。

退化維的作用

1、退化維具有普通維的各種操作,比如:上卷,切片,切塊等。

2、如果存在退化維,那麼在etl的過程将會變得容易。

3、它可以讓group by等操作變得更快。

垃圾維

針對某企業事件,通常提供了必要的查詢值,但是卻沒有直接映射資訊對象産生的維表,這樣的字段就是垃圾維。一般來說,如果olap系統包含雜亂的辨別和文字屬性,而且與時間維以外的維表沒有關系,就可以使用垃圾維。唯一要注意的是,垃圾維必須是對企業決策潛在限制值非常重要的屬性,通常會建立一個維表來存儲這些屬性。

一緻維

在多元體系結構中,沒有實體上的資料倉庫,由實體上的資料集市組合成邏輯上的資料倉庫。而且資料集市的建立是可以逐漸完成的,最終組合在一起,成為一個資料倉庫。 如果分步建立資料集市的過程出現了問題,資料集市就會變成孤立的集市,不能組合成資料倉庫,而一緻性次元的提出正式為了解決這個問題。

當有好幾個資料集市要合并成一個企業級的資料倉庫時,可以使用一緻維來內建資料集市以便确定所有的資料集市可以使用每個資料集市的事實。是以,一緻維常用于屬于企業級的綜合性資料倉庫,使得資料可以跨越不同的模式來查詢。

在同一個集市内,一緻性次元的意思是兩個次元如果有關系,要麼就是完全一樣的,要麼就是一個次元在數學意義上是另一個次元的子集。例如,如果建立月次元話,月次元的各種描述必須與日期次元中的完全一緻,最常用的做法就是在日期次元上建立視圖生成月次元。這樣月次元就可以是日期次元的子集,在後續鑽取等操作時可以保持一緻。如果次元表中的資料量較大,出于效率的考慮,應該建立物化視圖或者實際的實體表。

這樣,次元保持一緻後,事實就可以儲存在各個資料集市中。雖然在實體上是獨立的,但在邏輯上由一緻性次元使所有的資料集市是聯系在一起,随時可以進行交叉探察等操作,也就組成了資料倉庫。

父子維

父子次元基于兩個次元表列,這兩列一起定義了次元成員中的沿襲關系。一列稱為成員鍵列,辨別每個成員;另一列稱為父鍵列,辨別每個成員的父代。該資訊用于建立父子連結,該連結将在建立後組合到代表單個中繼資料級别的單個成員層次結構中。

緩慢變化維

在以次元模組化的資料倉庫中,有一種概念叫做緩慢變化維,slowly changing dimension。緩慢變化維的提出是因為在現實世界中,次元的屬性并不是靜态的,它會随着時間的流失發生緩慢的變化。這種随時間發生變化的次元我們一般稱之為緩慢變化維,并且把處理次元表的曆史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡稱為處理scd的問題。

處理的一般方法:

1.直接覆寫曆史資料。

如果該次元資料的變化并不是你所關心的,那麼可以采用直接覆寫曆史資料的方法。比如,員工表中某員工的政治面貌發生變化,你不關心這一點則可以直接覆寫曆史資料。

2.保留曆史紀錄并添加一個标志位。

該方法直接添加新紀錄,并将曆史紀錄的标志位設為inactive,新紀錄标志位設為active。如果需要還可以附上時間戳,表明舊紀錄是何時失效的。

資料倉庫中的次元(原創)

3.利用不同的字段儲存不同值。

新加一個曆史值字段,一個時間戳字段,一個新值字段。該方法若要儲存若幹條曆史紀錄則字段數會很多,不清晰明了。

資料倉庫中的次元(原創)

4.建立一個表來儲存曆史紀錄。

相當于把方法2中inactive的資料儲存于另外一張表中,原表中隻儲存active的資料。

資料倉庫中的次元(原創)

5.正常混合方法

這種模式是以上幾種模式的混合體,相對而言此種方法更全面,更能應對錯綜複雜且易變化的使用者需求,也是較為常用的。 

資料倉庫中的次元(原創)

此方法有以下幾條優點: 

1. 能用簡單的過濾條件選出次元目前的值。 

2. 能較容易的關聯出曆史任意一時刻事實資料的值。 

3. 如果事實表中有一些時間字段(如:order date, shipping date, confirmation date),那麼我們很容易選擇哪一條次元資料進行關聯分析。

6.非正常混合方法。

該方法在方法2的基礎上添加一個版本的字段,目前版本值為0,曆史版本為1,2,3,4...新資料插入時則版本号都加1. 并且在事實表中,為每條紀錄添加一個版本号字段和次元表對應,這樣可以解決次元表和事實表的多對多關系而不用使用時間戳作為查詢的條件。

資料倉庫中的次元(原創)

參考至:《商業智能深入淺出 cognos,informatica技術與應用》王飛著

                  http://blog.csdn.net/wh62592855/article/details/5642852

                  http://happyhou.blog.sohu.com/207395427.html

                  http://www.douban.com/note/151176578/

                  http://happyhou.blog.sohu.com/207394375.html

                  http://bbs.csdn.net/topics/230033248

                  http://bidwhome.itpub.net/post/20871/156215

本文原創,轉載請注明出處、作者

如有錯誤,歡迎指正

郵箱:[email protected]

繼續閱讀