
編 輯:雲祁
彭友們好,我是老彭啊。有彭友跟我說:現在都在做資料中台了,那還需要建資料倉庫嗎?
我嘿嘿一笑:哪個正經資料項目能離開倉庫啊?别說資料中台了,就算出了什麼資料下台、資料上台、資料上巴都得建數倉好麼?
因為,資料倉庫是OLAP側的核心啊!而且數倉很難建,因為資料倉庫的設計不能完全依賴于業務的需求,但又必須要服務于業務的價值。
很難了解?你可以簡單了解成為:産品經理不能完全按照客戶說的去設計,否則會設計出一個醜八怪,而是要帶着自己的了解,用自己的專業征服客戶。
廚子不能聽食客的要求去炒菜,你明白我的意思吧?
是以,在建構資料倉庫前,我們往往會通過總線矩陣設計,來快速了解業務并規劃資料倉庫體系。以求從宏觀的角度來描述企業的業務和資料現狀,并指導後續的資料倉庫模組化。
不妨先來看看,祖師爺 Kimball 在書中對總線矩陣的定義:
總線矩陣:提供一種分解企業DW/BI規劃任務的合理方式,行是業務過程,列是公共次元(一緻性次元),圖表中的 X 表示的是哪些列與哪些行有關系,也表示這一個業務過程需要有哪些公共次元。
是以,總線矩陣和一緻性次元、一緻性事實共同組成了 Kimball 的多元體系結構基礎。
在這種多元體系結構(MD) 的資料倉庫架構中,主導的思想便是分步建立資料倉庫,并由資料集市組合成企業的資料倉庫。
但是,在建立第一個資料集市前,架構師首先要做的就是設計出在整個企業内具有統一解釋的标準化的次元和事實,即一緻性次元和一緻性事實,而開發團隊必須嚴格的按照這個體系結構來進行資料集市的疊代開發。
如果我們在建立資料倉庫之初,隻考慮單獨的某個業務系統的資料建設,不僅無法滿足一緻性目标的。還會使互相有聯系的系統資料由于次元不同導緻關聯複雜或者關聯不上,資料之間互相成為了孤島,這對于後期的擴充或者整個數倉的建設都是巨大的阻礙。
一緻性次元就好比企業範圍内的一組總線,不同資料集市的事實的就好比插在這組總線上的元件。
這也是稱之為總線架構的原因。是以實際設計過程中,我們通常把總線架構清單成矩陣的形式,其中列為一緻性次元,行為不同的業務處理過程,即事實,在交叉點上打上标記表示該業務處理過程與該次元相關,這個矩陣也稱為總線矩陣(Bus Matrix)。
了解總線矩陣設計的必要性,它的作用就很容易了解了。簡單來講無非是以下三點:
- 幫助資料架構師清晰地梳理整個資料體系
- 幫助決策者(Boss)從宏觀的角度了解資料倉庫的整體情況
- 讓所有的資料倉庫參與者了解資料倉庫的設計
如何編寫總線矩陣?
首先,總線矩陣不是代碼,也不是純文檔性質。在建構總線矩陣對過程中,也需要完成許多代碼開發前期的準備工作。
首先完成橫向,即 資料域劃分,業務過程的确立。資料域是一種對資料的抽象,通過将聯系較為緊密的資料劃分在同一資料主題中,友善尋找和使用資料。
比如,制造業中,我們可以将數倉劃分為:生産、财務、人力、供應鍊、傳遞等資料域,每個域下包含不同的業務過程。如生産域下包括生産計劃、實際生産、裝置停機等業務。
通常是先确定業務過程有哪些,再按照某個規則将相關的業務劃分為同一資料域中,常用的規則有:按業務相關性、按需求方、按應用劃分等。也可以将資料域劃分為多級主題,比如先按照部門劃分一級主題,再按業務劃分二級主題。
資料域的劃分沒有對錯,根據實際情況進行劃分,讓資料歸納更清晰,更好找易用就是好的資料域劃分。劃分資料域時,可參考這些規則:數量不能太多,建議不超過10個;不同主題間無重疊業務過程;具有一定前瞻性,既能涵蓋目前所有的業務需求,又能在新業務進入時無影響地被包含進已有的資料域中或擴充新的資料域。
其次完成縱向列,即公共一緻性次元的劃分以及路徑成本的确定。次元是我們看世界的角度,度量則是形容名額的水準,他們都是名額的重要組成。比如有個名額:“四月傳遞2000輛車”,“四月”和“車”是次元,“2000”是路徑成本,“輛”則是度量機關,次元和度量組合在一起形成月度名額。如果沒有次元,“傳遞2000輛”則啥也代表不了。
次元的劃分具有行業共同性,比如電商行業通常涉及這些次元:買家、賣家、訂單、廣告、貨運、支付等,制造業中:裝置、産線、項目、物料、車型等,還有一些跨行業通用的次元,如城市、日期等。次元的一緻性是資料一緻性的重中之重,總線矩陣是一緻性次元建設的重要檔案。從讨論總線矩陣的那刻開始,數倉資料一緻性問題就解決了一半。
總線矩陣中的度量通常是原子名額,指業務過程中最基本的原子名額。比如生成計劃業務過程中,度量是“件數”,裝置停機事件中,度量為“停機時長”。總線矩陣中描述的度量,能夠給分析人員直覺的了解目前資料具備的分析能力。
最後是确定業務過程同次元間的關聯關系。應該分析每個業務過程,盡可能多的關聯次元與業務過程,而不僅僅是目前分析需要哪些次元,否則就陷入了面向需求開發的陷阱。
業務矩陣編寫完成後,應組織多方參與評審,包括業務方、分析人員、架構師、産品經理等,以确定業務矩陣的最終版本。
優點
總線矩陣是數倉建設的綱領性檔案,不論是從零開始一個項目,還是中途接手一個項目,總線矩陣總是最好的切入點。
總線矩陣有利于主資料管理。核心次元由資料管理責任人定義,在多個業務過程中使用,而不是被單一業務過程或部門定義,提供一緻性次元,實作跨業務過程鑽取的需求。總線矩陣清單示整個企業的公共次元,有助于建立核心次元清單,解決主資料管理和資料內建的需求。
總線矩陣有利于項目規劃和排期。總線矩陣将業務過程按主題劃分,每個主題下包含多個業務過程,各個主題中業務過程互不重疊。不同開發小組遵循該架構進行異步獨立開發,每個小組承擔不同資料域或同一資料域下不同業務過程,也可以進行一緻性次元開發,進而實作增量式的開發。不同小組間分工更加清晰,每個人對自己在組織中承擔的任務也更明确。
總線矩陣是資料一緻性的重要保障。總線矩陣提倡從初期規劃一緻性次元,各業務過程共享一緻性次元。通過一緻性次元,確定次元的有序建設,減少備援的出現。總線矩陣提供一目了然的次元能力觀察,讓後面開發的同學了解現有數倉資料,減少煙囪式建設的可能性。
總線矩陣可以避免面向需求開發。總線矩陣要求我們基于業務過程建設數倉,要求我們從全面的角度考慮次元建設。避免了拿到需求後盲目建設的情況,也避免後期不停維護擴充。
總線矩陣是數倉建設過程中各種角色間的溝通橋梁。架構師通過總線矩陣描述項目概況,進行任務分工;模組化人員通過總線矩陣了解項目中一緻性次元與業務過程關系,開展模組化工作;項目經理通過總線矩陣,了解項目規模,進行排期安排,進度跟進;BI同學通過總線矩陣,了解數倉包含的業務過程與支援鑽取的次元。通過總線矩陣,簡化不同角色人員間溝通,更好的實作不同組織的工作配合。
基于上述優點,我認為總線矩陣是數倉建設中最重要的文檔,應當由架構師在項目初期負責建設,并且長期維護和全局共享。