亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1256
2022-05-30
數據倉庫是一個面向主題的、集成的、非易失的、反應歷史變化的數據集合,用于支持管理決策。數據倉庫的首要目的是數據集成、將多個分散的、異構的數據源整合到一起,便于后續分析。
數據倉庫第一個特征是面向主題的,對于零售商而言,主題域可以是顧客、產品、庫存、銷售、銷售商等,對于生產商而言,主題域可以是產品、訂單、銷售商、材料單、原材料等。不同類型的公司,其主題是不同的。
數據倉庫第二個特征是集成的,其數據可以是從多個不同的數據源傳送過來,數據進入數據倉庫中后,進行轉換匯總等。數據進入數據倉庫后,源數據通常會有一些不一致,如不一致的格式,集成后要消除一些不一致性,為用戶提供一個統一的數據視圖,一致性處理包括命名習慣、關鍵字結構、度量單位等。
數據倉庫第三個特征是非易失的,數據倉庫的數據在裝載是是以靜態快照的方式進行的,后續發生變化后,一個新的快照記錄就會寫入數據倉庫,數據倉庫會保存數據的歷史變化。新的數據一般加入倉庫而不是取代,數據倉庫不斷吸收新的數據,并與原來的數據進行增量式集成。
數據倉庫的第四個特征是隨時間變化,即數倉中的每個數據只是在某個時間是準確的。數據倉庫中的數據時間期限要遠遠長于操作型系統中的數據時間期限。操作型數據倉庫含有當前值的數據,這些數據的準確性在訪問時是有效的,同樣當前值的數據能被更新,而數據倉庫中的數據僅僅是一系列某個時刻生成的快照。
一個經典的數據倉庫數據模型通常劃分為3層,操作數據層ODS、中間數據層 dw層、應用數據層ADS。
操作數據層ODS存儲了用于分析當前和集成后的運營數據,它的結構與數據來源一般都與數據倉庫相同,ODS提供源數據系統中抽取并清洗了的數據,在該層中會同步并結構化數據,保留歷史數據并清洗數據。
DW層又細分為DWD明細數據層和高粒度(粒度的概念會在下文中講解)匯總DWS匯總數據層以及低粒度匯總DMB層,
DWD是業務層和數據倉庫的隔離層,為DW層提供來源明細數據,提供業務系統細節數據的長期沉淀,為未來分析類需求的擴展提供歷史數據支撐 。數據模型與ODS層一致,不做清洗轉換處理,為支持數據重跑可額外增加數據業務日期字段、可按年月日進行分表、用增量ODS層數據和前一天DWD相關表進行merge處理。其為最細粒度的明細層事實表。
DWB保存低粒度匯總加工數據,根據DWD明細數據進行轉換,如維度轉代理鍵、身份證清洗、會員注冊來源清晰、字段合并、空值處理、臟數據處理、IP清晰轉換、賬號余額清洗、資金來源清洗等;DWS保存高粒度匯總數據,根據DWB層數據按各個維度ID進行高粒度匯總聚合,如按交易來源,交易類型進行合。?????? ? ? ? ? ? ??? ADS層存放數據產品的統計指標數據,根據DW和ODS層數據加工生成,可以直接用于BI報表展示。
三層分層建模的好處
減少重復開發:規范數據分層,開發一些通用的中間層數據,能夠減少極大的重復計算。
清晰數據結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。
數據血緣追蹤:簡單來講可以這樣理解,我們最終給業務誠信的是一能直接使用的張業務表,但是它的來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確地定位到問題,并清楚它的危害范圍。
把復雜問題簡單化。講一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。
同時可以清洗臟數據并屏蔽業務影響,不必改一次業務就需要重新接入數據。
維度建模(dimensionality modeling) DM 是數據倉庫工程中最經典的建模方式,其經典的代表是星形模型,星型模型時,冗余的多對一屬性會被移動到單獨的維度表中,維度表被標準化為第三范式,星型模型由一個事實表和一組維度表組成,維度表之間沒有關聯,以事實表為核心,維度表圍繞核心呈星型分布。
在一些場景下會使用雪花模型,每個維度模型都由一個帶有組合主關鍵字的表和一系列較小的表組成,前者稱為事實表,后者稱為維表,每一個維表有一個主關鍵字,它對應著事實表中的組合關鍵字中的一項,維表可以向外連接關聯多個子維表。雪花模型的事實表在中央,周圍是規范的維表。
星型和雪花模型都是單事實表對應多維表的方式,但在很多情況下維度空間內的事實表不止一個,而一個維表也可能被多個事實表用到即共享維度信息。很多時候維度建模都采用的是星座模式。星座模型的事實表在中央,周圍是規范和非規范的維表。星座模式使用了非規范化的星型模型和規范化的雪花模型的混合體。
星型、雪花、星座模型關系如下:雪花模式是將星型模式的維表進一步劃分,使各維表均滿足規范化設計。而星座模式則是允許星形模式中出現多個事實表。
事實表的技術基礎
發生在現實世界的操作型事件,其產生的可度量的數據值,存儲在事實表中,事實表行對應一個度量事件。除數字度量外,事實表包含外鍵,用于與之關聯的維度,也可以包含可選的退化的維度鍵和日期等。
事實表中的數字度量可分為可加、半可加 、不可加事實,下文中會結合業務講述該三類度量。一致性事實是如果某些度量出現在不同的事實表中,針對該事實的計數定義是相同的。
事務事實表的一行對應空間或時間上的某點的度量事件,事務事實表可以稠密或稀疏,僅當存在度量時才會建立行。度量數字事實必須與事務粒度保持一致。對于單事務事實表,一個業務過程建立一個事實表,反應一個業務過程的事實,多事務事實表,在同一個事實表中反應多個業務過程。多個業務過程是否放在一個事實表中,要分析不同的業務過程之間的相似性和業務源系統。如零售交易中的下單、支付、成功完結三個業務過程存在相似性,屬于訂單處理的一環,可以放在同一個事務事實表中。事務事實表可以很好的跟蹤一個事件,并對其進行度量分析。
周期性快照事實表
快照事實表在確定的時間間隔內對實體的度量進行抽樣,可以通過確認事實表的快照粒度和采樣的狀態度量來創建快照事實表。
累計快照事實表
累計快照事實表的行匯總了發生在過程開始和結束之間的度量事件,管道和工作流過程具有定義的開始點、標準的中間過程、定義的結束點。累計快照中的一行,訂單系統中對應一個具體的訂單,當訂單產生是插入一行,當管道過程發生時,累計事實表行被訪問并修改。除了日期外鍵和每個關鍵過程關聯外,累計事實表中包含其他維度和可退化的維度的外鍵。
三種事實表的對比
事務事實
周期快照
累計快照
時間
離散事務時間點
有規律可預測間隔產生快照
以時間跨度不確定的不斷變化的工作流
日期維度
事務日期
快照日期
業務流程涉及的多個日期
粒度
每個是事務一行
每行代表一個時間周期的實體
每行代表一個實體的生命周期
事實
事務事實
累計事實
業務過程事實和時間間隔的事實
事實表加載
插入
插入
插入與更新
事實表更新
不更新
不更新
變更時更新
無事實事實表
無事實事實表是不含事實或度量的事實表,其可以用來支持業務過程的度量。可以用其分析發生了什么。其主要有兩種,一種是事件類,記錄事件的發生。第二種是條件、范圍、資格類的。記錄維度與維度多對多之間的關系。
聚集型事實表
聚集型事實表通過匯總明細粒度數據來獲得改進查詢性能的效果,將使用頻繁的公用數據聚集成公共匯總層,聚集表的維度和度量需要和查詢明細的粒度數據一致。確認聚集維度后通過一致性上鉆獲取聚集事實表。
合并事實表將來自多過程的事實橫向鉆取,以相同粒度一致性維度合并放在一個單一的事實表中。
維度表技術基礎
每個維度表都包含單一的主鍵列,維度表的主鍵可以作為與之關聯的任何事實表的外鍵。
多層次維度包含不止一個自然層次,例如日歷日期維度,它可以從天到周到月到年的層次進行劃分,位置密集型維度可以包含多個地理層次。
日歷日期維度是連接到實際事實表使能夠按照日期、月份、財務周期和日歷上的特殊日期進行導航。
雜項維度是事務型商業工程產生的一系列混雜的、低粒度的標識和指示器。單獨的將不同的維度合并到一起的雜項維度。
管理橋接表·
支架維度包含對其他維度的引用,被引用的輔助維度稱為支架維度,外支架是聯結到其他維度表的維度表。并不是完全標準化的星型模型。
退化維度
退化維度沒有自己的屬性,但要將其放入事實表中來對這一現狀進行建模,但沒有關聯的維度表,退化維度常用于交易和累計快照事實表中。
維度層面上的操作有向上、向下、橫向、旋轉等
向上鉆取就是去掉分組列,獲取匯總數據。比如把四維銷售數據(所在地、時間、類型、分店維)上卷到(所在地、時間、類型維)三維銷售維度。
向下鉆取意味著給我更多的詳情,是向上鉆取的逆操作,從事實表中請求更為精細和更細粒度的數據,即增一個維度屬性創建一個分組列。通過維度引入執行下鉆,比如把三維銷售數據(所在地、時間、類型維)下鉆到(所在地、時間、類型、分店維)四維銷售數據。
橫向鉆取是相同的粒度鏈接兩個或多個事實表的過程。也可稱為跨表鉆取。
旋轉指能旋轉行列數據,換一個視角看相同的數據,例如將所在地作為x軸,時間作為y軸,顯示銷售收入,可以旋轉為時間作為x軸,所在地作為y軸的操作。
開發一個數據倉庫主要有兩種方法學,Inmon的企業信息工廠(CIF)和Kimball的業務維度生命周期,kimball業務維度生命周期如下圖。本文主要介紹Kimball的業務維度生命周期中的維度建模階段。
一個維度模型的創建可以通過兩個階段實現,第一個階段是創建高層維度模型,第二個階段通過識別模型的維度屬性向模型中添加細節。
本文以零售和庫存業務為例。
第一個階段的設計可以劃分為以下幾個步驟。如圖
1. 選擇業務過程
該活動的結果創建一個數據倉庫總線矩陣。
我們需要采用數據倉庫總線架構來構建一種架構化、增量式的數據倉庫。
總線矩陣采用組織的業務過程為矩陣行,重要的是業務過程,使用公共維度來表示矩陣的列,列有助于創建核心維度表。?????????????????????????????????????????????????????????????? 零售業務中的交易流程,數據要能夠分析被銷售的產品,在那個日期、那個商店、那個渠道、何種促銷環境下被銷售。
2. 確認粒度
粒度決定事實表中記錄什么,即事實表中每一行表達的層次細節。比如客戶銷售事務上的每個產品掃描到一行、倉庫中每種材料庫存水平的每日快照采用一行表示、醫生開具的票據的列表內容項采用一行表示。針對不同事實表粒度,要建立不同的事實表,但同一事實表中不要混用多種不同的粒度。粒度是指數據倉庫的數據單位中保存數據的細化或綜合程度的級別。細化程度越高,粒度級就越小;相反,細化程度越低,粒度級就越大。粒度影響存放在數據倉庫 中的數據量的大小,同時影響數據倉庫所能回答的查詢類型。在數據倉庫中的數據量大小與查詢的詳細程度之間要作出權衡。
原子粒度數據具有強大的多維性,事實度量越詳細,越能獲得更確定的事實表。也可以通過匯總粒度來表示對原子數據的聚集,選擇了較高級別的維度,就限制了獲取更細節維度的可能,無法實現用戶下鉆細節的需求。
3. 選擇維度
選好業務過程并確定好粒度后,就可以確認維度了,維度設置了對事實表的事實提問的上下文。簡單上線文信息在以往使用字典、目錄、系統監視器等管理的。復雜上下文信息描述的是和簡單上下文信息相同的數據,但是從一個不同的側面描述。外部上下文信息是那些公司以外的隨時間變化的信息方面起重要作用的信息。在零售業務中,日期、門店、產品、促銷、渠道、支付方式都可以作為其維度信息。
4. 選擇事實
事實表的粒度決定哪些事實在維度模型中可以使用。事實表包含與其描述過程中有關的所有事實。零售中的事實可以包括銷售數量、單價、折扣、價格等事實。完全可加事實如銷售數量、銷售、成本額、利潤。不可加事實如利潤率、單價等。半可加事實庫存、余額等。
第二個階段確定維度模型的所有維度屬性
此階段涉及添加一些屬性,他們是在業務需求分析階段,由用戶指出的在分析所選的業務流程中所必須用到的屬性,維度模型的有用性維度表中的屬性的范圍和性質決定。
選擇數據倉庫的持續時間,持續時間測定事實表回溯多長時間。
跟蹤緩慢變化的維度,數據倉庫的一個重要特征是反映歷史變化,如何處理維度的變化時維度設計的重要工作,維度的屬性不是靜態的,它是隨著時間流逝發緩慢的變化,與事實表的快速增長相比,維度變化相對緩慢。緩慢維度變化主要有三種類型,類型一、重寫緯度值,用修改的維度屬性覆蓋舊值。類型二、插入新的維度行,使得在同一個維度記錄中可以同時訪問該屬性的新舊兩個值。類型三、添加新的維度列,創建一個新的維度記錄。
維度建模的優缺點
優點:
數據冗余相對小,結構清晰,便于做數據分析,維度建模是可預測的標準框架,允許數據庫系統和最終用戶查詢工具在數據方面生成強大的假設條件,星型連接模型可以忍受不可預知的用戶行為變化,切換使用不同的維度查詢很方便。
缺點:
與ER建模相比,維度建模反范式,浪費存儲,不易擴展,構建前需要大量數據預處理,業務發生變化時,需要重新進行維度定義,維度變化對數據更新量大,預處理過程中,會導致數據的大量冗余,同時使用成本相對較高,查詢時需要關聯多張表。單純的依靠維度建模,不能保證數據來源的一致性和準確性。
數倉與數據湖的區別
很多時候,數據倉庫和數據湖被認為是等同的,二者用到的大數據組件技術棧也很相似,但二者代表企業要打成的不同目標。
數據湖
數據倉庫
能夠處理所有類型的數據,結構化數據、半結構化數據、非結構化數據,數據類型依賴于數據源系統的原始數據類型
只能對結構化數據進行處理,而且schema信息必須事先定義
數據湖包含更多相關信息,能夠為企業挖掘新的運營需求
數據倉庫通常用來存儲和維護長期數據,數據可以被按需訪問
擁有足夠強的算力用于處理和分析所有類型的數據,分析后的數據會被存儲起來供使用
處理結構化數據,將他們轉化為多維數據,或者報表,以滿足后續報表和數據分析需求。
后記
流批一體、湖倉一體大勢所趨,體驗數據湖請來華為云EI-數據湖探索 DLI。
參考:
數據倉庫工具箱
數據庫系統設計、實現與管理
數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。