深入解析數(shù)倉維度建模中的維度
如果你是剛接觸維度建模,可能對于維度的印象是不變化的或者變化緩慢,且具有相同屬性的集合體,例如日期維。但是在真實的應(yīng)用場景中維度可能有十幾種之多,例如從維度使用的特點來看可以分為緩慢變化維度、角色維度、微型維度、縮小維度、雜項維度、支架維度等、橋接維度;從維度的處理方式可以分為快照維度表、拉鏈維度表等;從維度的數(shù)據(jù)特點可以分為遞歸層次、多值屬性、多值維度等。這些維度的類型以及方法可以提供相應(yīng)的工具幫助處理真實的業(yè)務(wù)場景中。利用這些維度可以更好地平衡模型設(shè)計以及業(yè)務(wù)需求,同時具備一定的可拓展性以及可維護(hù)性等。
角色維
如果將維度想象成一把直尺,直尺上不同的刻度代表一個維度表上的不同的列。那么在幾何課上將直尺用來測量距離,在閱讀時用直尺用作書簽,夾在書中,這個時候直尺在不同的場景下有著不同的作用,這就是角色維的概念。即相同的維度表在不同的模型中起著不同的作用,一般可以用視圖實現(xiàn)。
微小維
如果直尺很長,但是每次測量都只用到前面的部分,那么就將直尺進(jìn)行一定程度的裁剪,將用的最多的部分獨立出來,方便使用,這就是微小維的概念,即將維度的子集單獨出來進(jìn)行使用。與微小維所類似的的是微型維的概念。微型維并不是以子集拆分而是以變化程度進(jìn)行拆分的,即將維度中變化比較頻繁的維度單獨拆分出來進(jìn)行管理。因為維度表往往都是寬表,單獨出來的微型維度可以防止維度表的頻繁更新導(dǎo)致鎖,進(jìn)而影響使用。微小維與微型維示意圖如圖1所示。
圖片
▲圖1 微小維與微型維示意圖
支架維度
支架維度與橋接維度都可以看成維度的一種補充形式,前者是對于維度屬性的額外補充;后者是對于維度表的一種橋接關(guān)系,關(guān)聯(lián)另外的維度表。支架維度字如其名,是對于維度中屬性信息的一種補充,其主要是維度表中對于另外維度的引用關(guān)系。例如商品中有出廠日期屬性,但是日期屬性是屬于日期維度的信息,如圖2所示。
▲圖2 支架維度示意圖
支架維度本質(zhì)上是不同維度表的關(guān)聯(lián),但是在維度建模中維度表之間的關(guān)聯(lián)是應(yīng)該通過事實表進(jìn)行的。
橋接維度
對于橋接維度可能就更加好理解了,就是兩個維度表之間通過第三張維度表進(jìn)行關(guān)聯(lián),其中存儲另外兩個維度表的關(guān)系。如圖9-6所示,維度表A與維度表B之間某個字段的屬性存在多對多關(guān)系,基于這種多對多關(guān)系設(shè)計維度表C,用來存儲這兩個屬性的關(guān)系。例如代理商與客戶之間,一個代理商可以代理多個客戶,同時一個客戶也可以隸屬于多個代理商,那么維度表C則就是代理商與客戶的映射關(guān)系。當(dāng)然依然還是按照維度建模的理論,維度之間的關(guān)系應(yīng)該通過事實表去體現(xiàn),如果你清楚這樣做帶來的好處以及壞處,那么依然可以采用這種方式去構(gòu)建你的維度。橋接維如圖9-5所示。
圖片
▲圖3 橋接維示意圖
這樣通過支架維度、橋接維度我們可以解決維度中出現(xiàn)多值、多屬性的問題。然而對于某些零散的維度,每個維度屬性值都比較少,例如不同渠道的付款的方式:渠道粗略的看只有線上以及線下;付款方式的只有現(xiàn)金、信用卡、網(wǎng)絡(luò)支付。將這2個屬性進(jìn)行笛卡爾組合之后,過濾掉不合理的場景,就完成了簡單的雜項維的構(gòu)建,如表1所示。
表1 雜項維度
代理鍵 | 渠道 | 付款方式 |
1 | 線上 | 網(wǎng)絡(luò)支付 |
2 | 線下 | 現(xiàn)金 |
3 | 線下 | 信用卡 |
此外對于很多維度是有層級結(jié)構(gòu)的,例如省份、城市或者母公司、子公司等。這種層次結(jié)構(gòu)的維度對于應(yīng)用使用并不友好,故往往采用扁平化的方式進(jìn)行處理方便應(yīng)用使用。但是這種處理需要根據(jù)具體的應(yīng)用特點,例如對于省份城市可能直接進(jìn)行平鋪展示,而對于某些場景會處理上一級公司或者下一級公司進(jìn)行展示,如表2所示。
表2 平鋪處理層次維度
代理鍵 | 國家 | 省份 | 城市 | 區(qū) |
1 | 中國 | 江蘇 | 蘇州 | 開發(fā)區(qū) |
2 | 中國 | 上海 | 上海 | 閔行區(qū) |
當(dāng)然也有利用上下級別引用來進(jìn)行展示的維度信息,如表3所示。
表3 利用上下級別引用處理的層次維度
代理鍵 | 代理商 | 下一級代理商 | 上一級代理商 |
1 | A | C | B |
2 | B | E | D |
說到這里一些常見的維度處理方式基本上就告一段落了,但是在維度的世界中,維度并不是一成不變的,恰恰相反,很多維度會隨著時間變化而進(jìn)行緩慢的變化,例如用戶年齡每一年都要變化。同時一些業(yè)務(wù)的變化必然也會導(dǎo)致維度發(fā)生變化,例如公司部門或者產(chǎn)品屬性的調(diào)整都會導(dǎo)致此類的場景,因為這就引出來維度中非常重要的概念,緩慢變化維度。
那么關(guān)于緩慢變化維度在《企業(yè)級數(shù)據(jù)架構(gòu)》一書中尋找吧。
關(guān)于作者:
李楊,資深數(shù)據(jù)架構(gòu)師,在數(shù)據(jù)相關(guān)領(lǐng)域有10年以上工作經(jīng)驗。頭部保險資管公司科技平臺交易系統(tǒng)團(tuán)隊開發(fā)組負(fù)責(zé)人,負(fù)責(zé)多個應(yīng)用以及數(shù)據(jù)平臺的建設(shè)、優(yōu)化以及遷移工作。曾擔(dān)任某數(shù)據(jù)公司技術(shù)合伙人,負(fù)責(zé)多個金融機構(gòu)的數(shù)據(jù)倉庫或數(shù)據(jù)平臺相關(guān)的工作。《企業(yè)級數(shù)據(jù)架構(gòu):核心要素、架構(gòu)模型、數(shù)據(jù)管理與平臺搭建》作者。
本文摘編于《企業(yè)級數(shù)據(jù)架構(gòu):核心要素、架構(gòu)模型、數(shù)據(jù)管理與平臺搭建》(書號:9787111746829),經(jīng)出版方授權(quán)發(fā)布,轉(zhuǎn)載請標(biāo)明文章出處。





























