資料平台維度模型設計十個技巧

2021-09-12 08:57:04 字數 3048 閱讀 3978

了解過資料倉儲歷史的人都知道bill inmon、 ralph kimball。 bill inmon 代表作《building the data warehouse》 , ralph kimball代表作為 《the data warehouse toolkit》、《the data warehouse lifecycle》。兩位大師對資料模型都分別作了深入闡述,個人理解的資料模型是資料平台的靈魂。資料模型設計好了對資料應用、資料分析支援是非常有幫助的。尤其 kimball 提出的維度模型 ,圍繞業務模型能夠直觀的表達業務資料關係。

技巧一:維度表中應該包含最細的顆粒度。

通常在資料平台做開發的同學,「特麼」經常抱怨 「 需求怎麼又變了,這個需求能不能不要來回的改「,資料建設中會遇到非常不確定性需求,不可**篩選與彙總。

尤其是在網際網路做資料化運營,絕大部分需求幾個彙總類指標是無法滿足需求,很多時候會沉浸到比較明細、更深層次的細節資訊。當然彙總指標是能夠概括一些概述資料細節,但只有細節資料才能回答各種不停的業務上資料追問。

技巧二: 圍繞業務流程來構建維度。

這兩個流程背後代表某個業務事件活動,在不同的環節產生的資料項是不同的,如果將流程不同階段的指標沉澱下來變為可度量的關鍵指標,如果將這些關鍵指標根據關係合併與設計到事實表中,就變為支撐業務人員分析、探索業務的細節資料。

為了能夠從業務流程上的多維度來探索資料,所涉及到的很多維度最好是業務流程來做設計,比如上圖交易現相關,從訂單的**,所屬產品、到支付階段的資金**,從業務流程上來看,還可以擴充套件出更多的維度、與度量值。

在不同的業務環節,業務人員都會「很任性」的需求不同指標,但是在需求中往往是與業務流程有很大關係的。

技巧三:盡量保證每張事實表與時間維度有關聯

在原則二中描述那兩個案例業務永遠是與日期有關係的,不管是月、日、年、還是分、秒,財務年、自定義時間事件段等。

每個事實表至少有乙個外來鍵能夠與日期維度表相連,時間維度能才能反映出存量與流量,才能分析某一時刻、某一時間段的業務流程變化情況。

技巧四:同一張事實表的指標對應維度層級必須一致

一般的事實表有四種型別,粒度事實、週期性快照事實、聚合快照事實、非事實事實表,不管它們的粒度型別,事實表中的每個度量值在顆粒度上必須保持與維度的顆粒度是一致的,否則就等著崩潰吧。

例如原則二給出的案例,要分析乙個使用者訂單支付業務。如果對這個業務進行設計分析模型時,把產品維度粒度定義為產品,但是在度量值金額卻是按照不同產品分類做聚合的,那就有意思了。我暫時也沒回憶起類似的場景會在什麼情況犯錯。

技巧五:處理好事實表和維度表之間的多對多關係

在多個維度表的值可以賦給單個事實事務時,事實表和維度表之間通常是多對多關係,比如為了計算寫書的作者分成,一本書可能有多個作者, 乙個作者可能出版了多本書,這個案例下就是多對多的關係。要考慮到可以計算出每個作者的的分成,中間可以增加乙個橋接表。

綜上所述,

在這種情況下多個值的維度與事實表直連可以採用橋接表來處理。

技巧六:經常發生變化的維度處理

在設計維度上很多時候都是扁平化處理,業務中普遍的維度關係是一對一的關係,比如例如客戶simmy將自己的位址由原先的addr1改為addr2。這時我們需要將這個記錄了客戶simmy的記錄中的有效截止日期改為現在,並重新新增一條有效截止日期為現在的和乙個新的版本號且address為addr2的記錄。

但是也經常存在一對多的關係,比如大家的購物郵寄位址、個人**號碼等在現實生活中有變化的處理。這種情況可能存在一對多的關係,假如一張維表存在上百萬的維度且彙總資訊經常在變化,那得注意做緩慢變化、或快速變化處理了。

技巧七:讓維度表使用**鍵

英文叫surrogatekey,翻譯過來又叫**鍵,在建模中通過一些毫無意義鍵值來代替一些業務鍵值,有利於維度統一整合。

技巧八:進行一致性維度的處理

一致性維度,又叫統一維度。對於構建企業級資料平台資料模型具有關鍵的意義,通過在資料轉換處理環節一次性處理後,在構建不同資料集市、不同資料層時可以反覆被使用。

統一維度在構建多維模型時,可以很便捷能把多種不同型別業務指標進行關聯,讓使用使用者在不同業務間切換分析、還能減少維護工作。

比如資料描述經常不一致性如,同名異義、同物異名,還有口徑多樣化、編碼不統

一、命名不統一等。還能處理一些未知、不知道名字、日期待定等一些含

糊的分類。

而然,在實施統一維度時最大的障礙是需要不同的業務部門、it部門對每個維度屬性上達成一致,那就涉及到資料管理、資料治理的範疇了。比如含義相同但名稱不同業務術語等。

技巧九:分析功能標籤化標籤以及過濾器等資訊可以當做維度來儲存。

其實這也不是什麼原則,個人更傾向於歸類到技巧中。比如在構建分析型資料產品時,有些功能性的標籤、查詢類的**或分類完全可以維度化。

例如某些下拉列表中篩選標籤以及過濾器閾值等、使用者的特定群體探索、產品的相關聯分析等,都可以維度化並做預處理。

這樣做的好處是速度快,把部分分析結果資料做預處理,查詢中需要聚合部分變為過濾查詢,這樣會提高分析查詢效率的。

技巧十:大維度的退化處理

所謂的大維度,是指維度資料量特別大,比如現在網際網路的url維度可能幾十萬上百萬,還有客戶,產品等等。乙個大的企業客戶維度往往有上百萬記錄,每條記錄又有上百個字段。而大的個人客戶維度則會超過千萬條記錄,這些個人客戶維度有時也會有十多個字段,但大多數時候比較少見的維度也只有不多的幾個屬性。

這些維度的處理往往採用把大屬性轉為小屬性、退化處理,增加更多的不同分類欄位等特殊處理。

資料平台維度模型設計十個技巧

了解過資料倉儲歷史的人都知道bill inmon ralph kimball。bill inmon 代表作 building the data warehouse ralph kimball代表作為 the data warehouse toolkit the data warehouse life...

Xshell 十個技巧

一 帳號密碼儲存。可以儲存多個vps登陸資訊,免去每次輸入的煩惱。二 數字小鍵盤輸入。如果不設定的話,輸入數字小鍵盤,會顯示亂碼。如圖設定即可 三 設定文字顏色。如圖設定,就可以得到像黑客帝國那樣綠色的文字,在你編譯軟體的時候,是不是恍然若見那華麗麗的數字瀑布?四 設定命令快捷按鈕 當你管理多個vp...

Android 開發設計前十個技巧

2.良好的程式設計習慣 良好的程式設計習慣不僅可以使程式 易於讀懂和修改,還可以使程式結構合理 清晰。開發人員可以從程式結構模組化 命名規則清晰易懂 注釋方法簡潔明瞭,文字格式易讀等方面開始養成良好習慣,讓應用開發事半功倍,提高程式的執行效率。4.使用最新版本的軟體開發sdk api 隨著andro...