數據倉庫(7)數倉規範設計

規範設計在這裡取《大數據之路:阿里巴巴大數據實踐》中的定義,這裡記錄一下本人對這一塊自己的理解。

規範定義指以維度建模作為理論基礎 構建匯流排矩陣,劃分和定義數據域、業務過程、維度、度量 原子指標、修飾類型、修飾詞、時間
周期、派生指標。

所謂的規範的定義,簡單理解,如果把數據當作貨物,那就是貨物的分類,以及對應相關的屬性,比如生產日期,某個原料的含量等,我們可以把相近或者相同貨物,按照一定的規律,放在一起,方便入庫與出庫,需要某個貨物按照這些規律就可以,以比較快的速度拉取出來。

一般的規範設計包含一下幾個方面:劃分和定義數據域、業務過程、維度、度量 原子指標、修飾類型、修飾詞、時間周期、派生指標。

數據域:指面向業務分析,將業務過程或者維度進行抽象的集合。其中,業務過程可以概括為一個個不可拆分的行為事件,如買家下單事件,買家是維度。數據域需要抽象提煉,並且長期維護和更新,不可輕易變動。劃分數據域時,既要能涵蓋當前所有的業務需求,又能在新業務進入時無影響地被包含進已有的數據域和擴展新的數據域。
業務過程:指企業的業務活動,如下單、支付等,業務過程是一個不可拆分的行為事件。
時間周期:用來明確數據統計的時間範圍或者時間點,如最近30天、自然周、截至當日等。
修飾類型:是對修飾詞的一種抽象劃分。修飾類型從屬於某個業務域,如日誌域的訪問終端類型涵蓋無線端、PC端等修飾詞。
度量/原子指標:原子指標和度量含義相同,基於某一個業務事件行為下的度量,是業務定義中不可再拆分的指標,具有明確業務含義的名詞,如支付金額。
維度:維度是度量的環境,用來反映業務的一類屬性,這類屬性的集合構成一個維度,也可以稱為實體對象。維度屬於一個數據域,如地理維度、時間維度。
維度屬性:維度屬性隸屬於一個維度,如地理維度裡面的國家名稱、國家ID、省份名稱等屬於維度屬性。
派生指標:派生指標=一個原子指標+多個修飾詞(可選)+時間周期。可以理解為對原子指標統計範圍的圈定。如原子指標:支付金額,最近1天海外買家支付金額則為派生指標(最近1天為時間周期,海外為修飾詞,買家作為維度,而不作為修飾詞)。

這裡說說對上面的理解,上面的定義,實際上就是對數據的分類,以及對指標統一口徑,統一命名的過程。首先,我們需要劃分數據域,這個是業務過程的集合,所以這個是對數據的一個大的分類,這個很重要,因為會影響到後續我們的數據怎麼開發和存儲,以及我們後續需要數據時,怎麼查詢,從哪裡查詢。

数仓规范设计

數據域是一個業務過程+維度的集合,也就是我們在建立規範定義的時候,需要先定義目前以及未來將有的業務過程,這個需要和業務一起定義討論,因為這一塊要貼近業務,一般的開發人員不夠業務人員對業務理解深入。確定好業務過程之後,再看看目前的業務過程有哪些維度,抽取出來,做好維度匯流排矩陣,維護好一致性維度。一個業務過程屬於一個數據域,但是一個維度可以屬於多個數據域。

定義好業務過程和維度之後,就要對業務過程和維度分類了,看看每一個數據域都有哪些內容,做好劃分。

分類好了之後,就是確定,每一個業務過程,有哪些原子指標,以及對應的修飾詞,時間周期。

做好之後,再根據需求生成我們想要的派生指標等,或者抽取一些數據寬表,用於數據分析,這樣我們就可以想要知道某個數據,就可以通過數據域->業務過程->相應的物理表->對應的指標,修飾詞,時間周期等,通過這個分類,定位到我們的數據,這樣也可以方便我們後續對數據地圖,數據資產的管理,這個就有點像是圖書館對圖書的分類,想定義大類,再細分,圖書是根據類目劃分,我們這裡要根據業務行為過程,具體的業務劃分。

图书馆分类

上面的圖是網路上某一個圖書館的圖書分類,我們可以注意到,每一個圖書分類前面都有一個字母,這個是每一個類目的程式碼,用於圖書的編碼記錄,這裡我們也是一樣,需要對每一個數據域,也就是數據的分類,分配一個編碼。這樣用於表命名,最簡單的就是作為前後綴,這樣我們就可以簡單的通過表名知道這個表是數據哪個數據域的,同樣的道理我們需要對上面提到的業務過程,維度,修飾詞等取一個統一的編碼,用於對後續數據開發過程中,表命名,欄位命名等,這樣我們通過表名稱,欄位名稱,就可以大概知道這張表是什麼數據。

這裡舉一個簡單電商的例子,比如交易數據域(transaction),業務過程屬於下單(order),支付金額(pay_amount),時間周期為最近1天(1d),按照上面的邏輯就是表和欄位的邏輯表示為transaction_order.pay_amount_1d,這裡為一個偽程式碼,幫助了解,具體以共同的約定為準。

原文鏈接://zhuanlan.zhihu.com/p/457903802