大數據分析基礎——維度模型


1基本概念

維度模型的概念出自於數據倉庫領域,是數據倉庫建設中的一種數據建模方法。維度模型主要由事實表和維度表這兩個基本要素構成。

1.1維度

維度是度量的環境,用來反映業務的一類屬性 , 這類屬性的集合構成一個維度 , 也可以稱為實體對象。 維度屬於一個數據域,如地理維度(其中包括國家、地區、 省以及城市等級別的內容)、時間維度(其中包括年、季、月、周、日等級別的內容)。

維度是維度建模的基礎和靈魂。在維度建模中,將度量稱為“事實” , 將環境描述為“維度”,維度是用於分析事實所需要的多樣環境。例如, 在分析交易過程時,可以通過買家、賣家、商品和時間等維度描述交易發生的環境。

維度所包含的表示維度的列,稱為維度屬性。維度屬性是查詢約束條件、分組和報表標簽生成的基本來源,是數據易用性的關鍵。

1.2事實表

事實表是維度模型的基本表,每個數據倉庫都包含一個或者多個事實數據表。事實數據表可能包含業務銷售數據,如銷售商品所產生的數據,與軟件中實際表概念一樣。

事實表作為數據倉庫維度建模的核心,緊緊圍繞着業務過程來設計,通過獲取描述業務過程的度量來表達業務過程,包含了引用的維度和與業務過程有關的度量。

事實表中一條記錄所表達的業務細節程度被稱為粒度。通常粒度可以通過兩種方式來表述:一種是維度屬性組合所表示的細節程度:一種是所表示的具體業務含義。

作為度量業務過程的事實,一般為整型或浮點型的十進制數值,有可加性、半可加性和不可加性三種類型。

相對維度來說,通常事實表要細長,行的增加速度也比維度表快的多,維度表正好相反。

事實表有三種類型 :

  1. 事務事實表:事務事實表用來描述業務過程,眼蹤空間或時間上某點的度量事件,保存的是最原子的數據,也稱為“原子事實表\周期快照事實表”。
  2. 周期快照事實表:周期快照事實表以具有規律性的、可預見的時間間隔記錄事實 ,時間間隔如每天、每月、每年等。
  3. 累積快照事實表:累積快照事實表用來表述過程開始和結束之間的關鍵步驟事件,覆蓋過程的整個生命周期,通常具有多個日期字段來記錄關鍵時間點,當過程隨着生命周期不斷變化時,記錄也會隨着過程的變化而被修改。

1.3度量 / 原子指標

原子指標和度量含義相同,基於某一業務事件行為下的度量,是業務定義中不可 再拆分的指標,具有明確業務含義的名詞 ,如支付金額。

事實表和維度交叉匯聚的點,度量和維度構成OLAP的主要概念,這里面對於在事實表或者一個多維立方體里面存放的數值型的、連續的字段,就是度量。

1.4維度表與事實表

維度表是事實表不可分割的部分。維度表是進入事實表的入口。豐富的維度屬性給出了豐富的分析切割能力。維度給用戶提供了使用數據倉庫的接口。最好的屬性是文本的和離散的。屬性應該是真正的文字而不應是一些編碼簡寫符號。應該通過用更為詳細的文本屬性取代編碼,力求最大限度地減少編碼在維度表中的使用。

維度表和事實表二者的融合也就是“維度模型”,“維度模型”一般采用“星型模式”或者“雪花模式”,“雪花模式”可以看作是“星型模式”的拓展,表現為在維度表中,某個維度屬性可能還存在更細粒度的屬性描述,即維度表的層級關系。

維度屬性也可以存儲到事實表中,這種存儲到事實表中的維度列被稱為“退化維度”。與其他存儲在維表中的維度一樣 ,退化維度也可以用來進行事實表的過濾查詢、實現聚合操作等。

1.5維度與指標例子

下表顯示的是一個維度(“城市”)和兩個指標(“會話數”和“每次會話瀏覽頁數”)。

維度 指標 指標
城市 會話數 每次會話瀏覽頁數
舊金山 5,000 3.74
柏林 4,000 4.55

2 維度設計

2.1維度基本設計方法

 
image.png

2.2維度的特點

2.2.1維度的層次結構

維度中的一些描述屬性以層次方式或一對多的方式相互關聯,可以被理解為包含連續主從關系的屬性層次。比如商品類目的最低級別是葉子類目,葉子類目屬於二級類目,二級類目屬於一級類目。在屬性的層次結構中進行鑽取是數據鑽取的方法之一。

2.2.2范式與反范式

當屬性層次被實例化為一系列維度,而不是單一的維度時,被稱為雪花模式。

大多數聯機事務處理系統( OLTP)的底層數據結構在設計時采用此種規范化技術,通過規范化處理將重復屬性移至其自身所屬的表中,刪除冗余數據。

將維度的屬性層次合並到單個維度中的操作稱為反規范化。分析系 統的主要目的是用於數據分析和統計,如何更方便用戶進行統計分析決 定了分析系統的優劣。采用雪花模式,用戶在統計分析的過程中需要 大 量的關聯操作,使用復雜度高,同時查詢性能很差;而采用反規范化處 理,則方便、易用且性能好。

2.3交叉探查

數據倉庫總線架構的重要基石之一就是一致性維度。在針對不同數 據域進行迭代構建或並行構建時,存在很多需求是對於不同數據域的業 務過程或者同 一數據域的不同業務過程合並在 一起觀察。比如對於日志數據域,統計了商品維度的最近一天的 PV 和 UV; 對於交易數據域, 統計了商品維度的最近一天的下單MV。現在將不同數據域的商品的 事實合並在一起進行數據探查 ,如計算轉化率等,稱為交叉探查。

2.4維度整合

我們先來看數據倉庫的定義:數據倉庫是一個面向主題的、集成的、 非易失的且隨時間變化的數據集合,用來支持管理人員的決策。

數據由面向應用的操作型環境進人數據倉庫后,需要進行數據 集成。將面向應用的數據轉換為面向主題的數據倉庫數據,本身就是一種集成。

具體體現在如下幾個方面:

  1. 命名規范的統一。
  2. 字段類型的統一。
  3. 公共代碼及代碼值的統一。
  4. 業務含義相同的表的統一 。主要依據高內聚、低稠合的理念,在物理實現中,將業務關系大、源系統影響差異小的表進行整合。

表級別的整合,有兩種表現形式。

  1. 垂直整合,即不同的來源表包含相同的數據集,只是存儲的信息不同。比如商品基礎信息表、 商品擴展信息表、商品庫存信息表,這些表都屬於商品相關信息表,依據維度設計方法,盡量整合至商品維度模型中,豐富其維度屬性。

  2. 水平整合,即不同的來源表包含不同的數據集,不同子集之間無交叉,也可以存在部分交叉。如果進行整合,首先需要考慮各個體系是否有交叉,如果存在交叉,則需要去重;如果不存在交叉,則需要考慮不同子集的自然鍵是否存在沖突,如果不沖突, 則可以考慮將各子集的自然鍵作為整合后的表的自然鍵;另一種方式是設置超自然鍵,將來源表各子集的自然鍵加工成一個字段作為超自然鍵。

2.5維度拆分

水平拆分
維度通常可以按照類別或類型進行細分。由於維度分類的不同而存在特殊的維度屬性,可以通過水平拆分的方式解決此問題。

在設計過程中需要重點考慮以下三個原則。

  1. 擴展性:當源系統、業務邏輯變化時,能通過較少的成本快速擴 展模型,保持核心模型的相對穩定性。軟件工程中的高內聚、低 稠合的思想是重要的指導方針之 一 。
  2. 效能 : 在性能和成本方面取得平衡。通過犧牲一定的存儲成本, 達到性能和邏輯的優化。
  3. 易用性:模型可理解性高、訪問復雜度低。用戶能夠方便地從模 型中找到對應的數據表,並能夠方便地查詢和分析。

根據數據模型設計思想,在對維度進行水平拆分時,主要考慮如下兩個依據。

  1. 維度的不同分類的屬性差異情況
  2. 業務的關聯程度

垂直拆分
在維度設計內容中,我們提到維度是維度建模的基礎和靈魂,維度 屬性的豐富程度直接決定了數據倉庫的能力。在進行維度設計時,依據 維度設計的原則,盡可能豐富維度屬性,同時進行反規范化處理。

某些維度屬性的來源表產出時間較早,而某些維度屬性的來 源 表產出時間較晚;或者某些維度屬性的熱度高、使用頻繁,而某些維度屬性的熱度低、較少使用 ; 或者某些維度屬性經常變化,而某些維度屬性比較穩定。在“水平拆分”中提到的模型設計的三個原則同樣適合解決此問題。

出於擴展性、產出時間、易用性等方面的考慮,設計 主從維度。主 維表存放穩定 、 產出時間早、熱度高的屬性;從維表存放變化較快、產 出時間晚、熱度低的屬性。

 

數據倉庫中常見的模型有:范式建模,雪花模型,星型建模,事實星座模型.

星型模型

星型模型是數據集市維度建模中推薦的建模方法。星型模型是以事實表為中心,所有的維度表直接連接在事實表上,像星星一樣。星型模型的特點是數據組織直觀,執行效率高。因為在數據集市的建設過程中,數據經過了預處理,比如按照維度進行了匯總,排序等等,數據量減少,執行的效率就比較高。

image

 

雪花模型

雪花模型也是維度建模中的一種選擇。雪花模型的維度表可以擁有其他維度表的,雖然這種模型相比星型模型更規范一些,但是由於這種模型不太容易理解,維護成本比較高,而且性能方面需要關聯多層維表,性能也比星型模型要低。所以一般不是很常用。

image

 

范式建模

第三范式建模是在數據庫建模中使用的建模方法,特點是體系化,擴展性好,避免冗余,避免更新異常。所以,在數據倉庫的EDW層建模中,我們也提倡使用第三范式建模。但是數據倉庫的集成和反映歷史變化的特征意味着數據量非常之大,表和表之間的關聯效率比較低,所以有些時候完全規范的范式建模並不是最好的選擇,通常我們會選擇非規范化處理,增加一些冗余的字段來避免表之間關聯的次數,這樣會節約大量的時間。

雪花模型是介於星型模型和范式建模之間的。個人理解,范式建模和雪花模型的區別在於雪花模型在維度上也是有冗余的。例如雪花模型例圖的地域維度不符合第三范式,因為地域維度中存在傳遞依賴,城市-省級-國家-地域。

 

星座模型

星座模型是星型模型延伸而來,星型模型是基於一張事實表的,而星座模型是基於多張事實表的,而且共享維度信息。 通過構建一致性維度,來建設星座模型,也是很好的選擇。比如同一主題的細節表和匯總表共享維度,不同主題的事實表,可以通過在維度上互相補充來生成可以共享的維度。

image

 

 

 

參考
《The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling》
《Google Analytics》
《大數據之路》


作者:高廣超
鏈接:https://www.jianshu.com/p/58da1060f0f5
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM