天天看點

資料倉庫系列之次元模組化

      上一篇文章我已經簡單介紹了資料分析中為啥要建立資料倉庫,從本周開始我們開始一起學習資料倉庫。學習資料倉庫,你一定會了解到兩個人:資料倉庫之父比爾·恩門(Bill Inmon)和資料倉庫權威專家Ralph Kimball。Inmon和Kimball兩種DW架構支撐了資料倉庫以及商業智能近二十年的發展,其中Inmon主張自上而下的架構,不同的OLTP資料集中到面向主題、內建的、不易失的和時間變化的結構中,用于以後的分析;且資料可以通過下鑽到最細層,或者上卷到彙總層;資料集市應該是資料倉庫的子集;每個資料集市是針對獨立部門特殊設計的。而Kimball正好與Inmon相反,Kimball架構是一種自下而上的架構,它認為資料倉庫是一系列資料集市的集合。企業可以通過一系列維數相同的資料集市遞增地建構資料倉庫,通過使用一緻的次元,能夠共同看到不同資料集市中的資訊,這表示它們擁有公共定義的元素。

       這裡我主要介紹次元模組化方法。這一方法是Kimball最先提出的,其最簡單的描述就是按照事實表、次元表來建構資料倉庫、資料集市。在次元模組化方法體系中,次元是描述事實的角度,如日期、客戶、供應商等,事實是要度量的名額,如客戶數、銷售額等。按照一般書籍的介紹,次元模組化還會分為星型模型、雪花模型等,各有優缺點,但很少直接回答一個問題,也就是資料倉庫為什麼要采用次元模組化?

資料倉庫系列之次元模組化

星型模型  

資料倉庫系列之次元模組化

雪花模型

       資料倉庫包含的内容很多,它可以包括架構、模組化和方法論。對應到具體工作中的話,它可以包含下面的這些内容:

1、資料架構體系:以Hadoop、Spark等組建為中心的資料架構體系。

2、各種資料模組化方法:如次元模組化、範式模組化法、實體模組化法。

3、輔助系統:排程系統、中繼資料系統、ETL系統、可視化系統這類輔助系統。

       我們暫且不管資料倉庫的範圍到底有多大,在資料倉庫體系中,資料模型的核心地位是不可替代的。是以,下面的将詳細地闡述資料模組化中的典型代表:次元模組化,對它的的相關理論以及實際使用做深入的分析。

      為了能更真切地了解什麼是次元模組化,我将在後續的文章中模拟一個大家都十分熟悉的電商場景,運用講到的理論進行模組化。理論和現實的工作場景畢竟會有所差距,這一塊,我會分享一下企業在實際的應用中所做出的取舍。接下來具體來了解次元模組化

       一、什麼是次元模組化

       次元模型是資料倉庫領域大師Ralph Kimball 所倡導,他的《資料倉庫工具箱》,是資料倉庫工程領域最流行的數倉模組化經典。次元模組化以分析決策的需求出發構模組化型,建構的資料模型為分析需求服務,是以它重點解決使用者如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。

       我們換一種方式來解釋什麼是次元模組化。學過資料庫的童鞋應該都知道星型模型,星型模型就是我們一種典型的次元模型。我們在進行次元模組化的時候會建一張事實表,這個事實表就是星型模型的中心,然後會有一堆次元表,這些次元表就是向外發散的星星。那麼什麼是事實表、什麼又是次元表,下面會專門來解釋。

資料倉庫系列之次元模組化

星型模型

       二、次元模組化的基本要素

      次元模組化中有一些比較重要的概念,了解了這些概念,基本也就了解了什麼是次元模組化。

      1. 事實表

        發生在現實世界中的操作型事件,其所産生的可度量數值,存儲在事實表中。從最低的粒度級别來看,事實表行對應一個度量事件,反之亦然。不太了解舉個例子。比如一次購買行為我們就可以了解為是一個事實,大家看一下星星模型示例。

資料倉庫系列之次元模組化

       圖中的訂單表(ICstockbill)就是一個事實表,你可以了解他就是在現實中發生的一次操作型事件,我們每完成一個訂單,就會在訂單中增加一條記錄。我們可以回過頭再看一下事實表的特征,在事實表裡沒有存放實際的内容,他是一堆主鍵的集合,這些ID分别能對應到次元表中的一條記錄。

       2. 次元表

每個次元表都包含單一的主鍵列。次元表的主鍵可以作為與之關聯的任何事實表的外鍵,當然,次元表行的描述環境應與事實表行完全對應。 次元表通常比較寬,是扁平型非規範表,包含大量的低粒度的文本屬性。圖中的customer(客戶表)、goods(商品表)、d_time(時間表)這些都屬于次元表,這些表都有一個唯一的主鍵,然後在表中存放了詳細的資料資訊。

    最後說一下次元模型的優缺點:

資料倉庫系列之次元模組化

1、資料備援小(因為很多具體的資訊都存在相應的次元表中了,比如客戶資訊就隻有一份)

2、結構清晰(表結構一目了然)

3、便于做OLAP分析(資料分析用起來會很友善)

4、增加使用成本,比如查詢時要關聯多張表

5、資料不一緻,比如使用者發起購買行為的時候的資料,和我們次元表裡面存放的資料不一緻

再說沒有資料倉庫的寬事實表的優缺點:

資料倉庫系列之次元模組化

1、業務直覺,在做業務的時候,這種表特别友善,直接能對到業務中。

2、使用友善,寫sql的時候很友善。

3、資料備援巨大,真的很大,在幾億的使用者規模下,他的訂單行為會很恐怖、粒度僵硬,什麼都寫死了,這張表的可複用性太低。

      資料倉庫的模組化方法有很多種,我目前主要學習了解的次元模組化方法。開始嘗試寫資料倉庫系列文章,文中如有錯誤或誤導的地方歡迎大家指出糾正。 希望這篇文章能夠給大家帶來幫助,最後感謝大家的閱讀。歡迎大家一起加入高效資料處理ETL交流群,一起讨論資料分析前ETL過程的問題,一起學習一起成長。 

 掃碼加群:

資料倉庫系列之次元模組化

小黎子,一個專注于資料分析整體資料倉庫解決方案的程式猿!

作 者:黃昏前黎明後

出 處:http://www.cnblogs.com/fly-bird/

歡迎關注個人公衆号:小黎子資料分析,轉載文章請務必注明出處。

繼續閱讀