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

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

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

1基本概念

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

1.1維度

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

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

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

1.2事實表

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

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

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

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

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

事實表有三種類型 :

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

1.3度量 / 原子指標

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

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

1.4維度表與事實表

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

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

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

1.5維度與指標例子

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

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

2 維度設計

2.1維度基本設計方法

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

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. 業務的關聯程度

垂直拆分

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

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

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

參考

《The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling》

《Google Analytics》

《大數據之路》

個人介紹:

高廣超:多年一線互聯網研發與架構設計經驗,擅長設計與落地高可用、高性能、可擴展的互聯網架構。

本文首發在 高廣超的簡書博客 轉載請註明!


分享到:


相關文章: