- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-02-28來源:中關村村花瀏覽數:528次
01 ?建模概念
數據幾乎總是用于兩種目的:操作型記錄的保存和分析型決策的制定。簡單來說,操作型系統保存數據,分析型系統使用數據。通常我們將操作型系統簡稱為OLTP(On-Line Transaction Processing)— 聯機事務處理,將分析型系統簡稱為OLAP(On-Line Analytical Processing)— 聯機分析處理。針對這兩種不同的數據用途,如何組織數據,更好地滿足數據使用需求。這里就涉及到數據建模問題。即設計一種數據組織方式(模型),來滿足不同場景。在OLTP場景中,常用的是使用實體關系模型(ER)來存儲,從而在事務處理中解決數據的冗余和一致性問題。在OLAP場景中,有多種建模方式有:ER模型、星型模型和多維模型。02? 維度建模
維度建模,是數據倉庫大師Ralph Kimball提出的,是數據倉庫工程領域最流行的數倉建模經典。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模復雜查詢的響應性能。它是面向分析的,為了提高查詢性能可以增加數據冗余,反規范化的設計技術。

2、維度表?
維度表,一致性維度,業務過程的發生或分析角度,我們主要關注下退化維度和緩慢變化維。退化維度(DegenerateDimension)在維度類型中,有一種重要的維度稱作為退化維度,亦維度退化一說。這種維度指的是直接把一些簡單的維度放在事實表中。退化維度是維度建模領域中的一個非常重要的概念,它對理解維度建模有著非常重要的作用,退化維度一般在分析中可以用來做分組使用。緩慢變化維(Slowly Changing Dimensions)維度的屬性并不是始終不變的,它會隨著時間的流逝發生緩慢的變化,這種隨時間發生變化的維度我們一般稱之為緩慢變化維(SCD)。SCD常用的三種處理方式:
① TYPE1 直接覆蓋原值

② TYPE2 增加維度行在為維度成員增加新行時,需為其分配新的主代理鍵。并且,至少需要在維度行再增加三列:有效日期、截止日期、行標識。這個地方可聯想拉鏈表設計。

③ TYPE3 增加屬性列

④ 混合方式可根據實際業務場景,混合或選擇使用以上三種方式,以快速方便而又準確的分析歷史變化情況。
3、粒度用于確定某一事實表中的行表示什么,是業務最小活動單元或不同維度組合,即業務細節程度。
4、維度建模流程維度建模步驟:選擇業務過程->聲明粒度->確定維度->確定事實。旨在重點解決數據粒度、維度設計和事實表設計問題。
聲明粒度,為業務最小活動單元或不同維度組合。以共同粒度從多個組織業務過程合并度量的事實表稱為合并事實表,需要注意的是,來自多個業務過程的事實合并到合并事實表時,它們必須具有同樣等級的粒度。由于在維度建模過程中,涉及到很多概念。下面通過一個場景來,來一一說明。例如:常見的電商下單環節,每個用戶提交一筆訂單(僅限一個物品),就對應于一條訂單記錄。


03? 維度建模方法論
數據倉庫建模方法論可分為:維度建模、范式建模、Data Vault模型、Anchor模型。
1、維度模型企業中最流行、也是最經典的數倉建模經典,數據倉庫大師Ralph Kimball的經典著作《數據倉庫工具箱 維度建模權威指南 第三版》一本書進行了論述。從事數據倉庫/ETL/BI的同學,強烈建議買一本至少讀一遍。按數據組織類型劃分可分為星型模型、雪花模型、星座模型。
(1)星型模型星型模型主要是維表和事實表,以事實表為中心,所有維度直接關聯在事實表上,呈星型分布。
圖來源于Kimball《The Data Warehouse Toolkits -3rd Edition》
(2)雪花模型雪花模型,在星型模型的基礎上,維度表上又關聯了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。尤其是基于hadoop體系構建數倉,減少join就是減少shuffle,性能差距會很大。
(3)星座模型星座模型,是對星型模型的擴展延伸,多張事實表共享維度表。數倉模型建設后期,大部分維度建模都是星座模型。
2、范式模型
即 實體關系(ER)模型,數據倉庫之父Immon提出的,從全企業的高度設計一個3NF模型,用實體加關系描述的數據模型描述企業業務架構,在范式理論上符合3NF。此建模方法,對建模人員的能力要求非常高。
3、Data Vault模型
DataVault由Hub(關鍵核心業務實體)、Link(關系)、Satellite(實體屬性) 三部分組成 ,是Dan Linstedt發起創建的一種模型方法論,它是在ER關系模型上的衍生,同時設計的出發點也是為了實現數據的整合,并非為數據決策分析直接使用。
4、Anchor模型高度可擴展的模型,所有的擴展只是添加而不是修改,因此它將模型規范到6NF,基本變成了K-V結構模型。一般很少使用,本文不多做介紹。
04? 建模規范
以維度建模為理論基礎,定義一系列術語來描述建模對象。下圖摘自于《阿里巴巴大數據實踐之路》。數據域指面向業務分析,將業務過程或者維度進行抽象的集合。在劃分數據域時,既能涵蓋當前所有的業務需求,又能在新業務進入時無影響地被包含進已有的數據域中和擴展新的數據域。業務過程指企業的業務活動事件,如下單、支付、退款都是業務過程。請注意,業務過程是一個不可拆分的行為事件,通俗地講,業務過程就是企業活動中的事件。時間周期用來明確數據統計的時間范圍或者時間點,如最近30天、自然周、截至當日等。修飾類型是對修飾詞的一種抽象劃分,是從屬于某個業務域的。修飾詞指除了統計維度以外指標的業務場景限定抽象。修飾詞隸屬于一種修飾類型。度量/原子指標原子指標和度量含義相同,基于某一業務事件行為下的度量,是業務定義中不可再拆分的指標,具有明確業務含義的名詞,如支付金額。維度維度是度量的環境,用來反映業務的一類屬性,這類屬性的集合構成一個維度,也可以稱為實體對象。維度屬于一個數據域,如地理維度(其中包括國家、地區、省以及城市等級別的內容)、時間維度(其中包括年、季、月、周、日等級別的內容)。維度屬性維度屬性隸屬于一個維度,如地理維度里面的國家名稱、國家ID、省份名稱等都屬于維度屬性。派生指標派生指標=一個原子指標+多個修飾詞(可選)+時間周期。可以理解為對原子指標業務統計范圍的圈定。
數據層次的劃分:
ODS:Operational Data Store,操作數據層,在結構上其與源系統的增量或者全量數據基本保持 一致。它相當于一個數據準備區,同時又承擔著基礎數據的記錄以及歷史變化。其主要作用是把基礎數據引入到MaxCompute。
CDM:Common Data Model,公共維度模型層,又細分為DWD和DWS。它的主要作用是完成數據加工與整合、建立一致性的維度、構建可復用的面向分析和統計的明細事實表以及匯總公共粒度的指標。
DWD:Data Warehouse Detail,明細數據層。
DWS:Data Warehouse Summary,匯總數據層。
ADS:Application Data Service,應用數據層。
具體倉庫的分層情況需要結合業務場景、數據場景、系統場景進行綜合考慮。數據分類架構


圖片來源網絡


(4)成本與性能平衡 適當的數據冗余可換取查詢和刷新性能,不宜過度冗余與數據復制。
(5)數據可回滾 處理邏輯不變,在不同時間多次運行數據的結果需確定不變。
(6)一致性 相同的字段在不同表中的字段名必須相同。
(7)命名清晰可理解 表命名規范需清晰、一致,表命名需易于下游的理解和使用。
(8)補充說明 一個模型無法滿足所有的需求。 需合理選擇數據模型的建模方式。 通常,設計順序依次為:概念模型->邏輯模型->物理模型。


在整個設計過程中,應當遵循下面一些原則:
選擇一種適合的事實表類型。 事實盡可能完整,包含整個業務過程的全部事實。 確保每一個事實度量都是一致性,反復計算都會得到相同的結果。盡量記錄一些“原子”事實,而不是加工后的結果。 可適當做些”維度退化屬性”,提高事實表的查詢性能。 為提高聚合性能,可適度做些上卷匯聚事實表。?05? 建模工具
1、PowerDesignerPowerDesigner是目前數據建模業界的領頭羊。功能包括:完整的集成模型,和面向包含IT為中心的、非IT為中心的差異化建模訴求。支持非常強大的元數據信息庫和各種不同格式的輸出。PowerDesigner擁有一個優雅且人性化的界面,非常易懂的幫助文檔,快速幫助用戶解決專業問題。








7、Excel Mapping通過我們最熟悉的Excel進行維護數據模型、血緣關系和元數據管理,話不多說,直接上圖:
06? 總結