數(shù)據(jù)倉庫與Kimball維度建模概覽
操作型系統(tǒng)與數(shù)據(jù)倉庫
操作型系統(tǒng):
保存、更新计呈、刪除數(shù)據(jù)
一般一次處理一個事物
不必維護(hù)歷史數(shù)據(jù)砰诵,只需要修改數(shù)據(jù)以反映最新的狀態(tài)
優(yōu)化目標(biāo)是更快的處理事物-
DW/BI系統(tǒng):
使用數(shù)據(jù)
一般一次處理多個事物
需要保存數(shù)據(jù)的變化狀態(tài)
優(yōu)化的目標(biāo)是高性能的完成用戶的查詢DW/BI系統(tǒng)不是操作型系統(tǒng)記錄的拷貝,因?yàn)槠渚薮蟮牟町惏葡裕響?yīng)將這兩種系統(tǒng)隔離
DW/BI系統(tǒng)的特征
- 查詢簡單茁彭、快捷。數(shù)據(jù)要直觀扶歪,容易以各種方式組合切分?jǐn)?shù)據(jù)理肺,且能短時間返回查詢結(jié)果。
- 數(shù)據(jù)一致性善镰。同名同義性與異名異義性妹萨,對不同來源的數(shù)據(jù)要進(jìn)行清洗、確保質(zhì)量炫欺。
- 易擴(kuò)展乎完。能夠簡單方便的進(jìn)行更改,而不破壞現(xiàn)存的數(shù)據(jù)和應(yīng)用品洛。
- 及時展現(xiàn)信息树姨。將原始數(shù)據(jù)在短時間內(nèi)轉(zhuǎn)換成可以使用的信息。
- 安全性毫别。
- 決策支持娃弓。輸出是基于數(shù)據(jù)分析所產(chǎn)生的決策,這是數(shù)據(jù)倉庫核心的影響和價值岛宦。
- 用戶易于接受台丛。與操作型系統(tǒng)的不可替代性不同,數(shù)據(jù)倉庫對業(yè)務(wù)人員來說是可選的。
維度建模
維度建模是展示挽霉、分析數(shù)據(jù)的首選技術(shù)的原因在于:
- 以商業(yè)用戶可理解的方式發(fā)布數(shù)據(jù)
- 提供高效的查詢性能
簡單性是至關(guān)重要的防嗡,從簡單的數(shù)據(jù)模型開始是保持設(shè)計簡單性的基礎(chǔ)。業(yè)務(wù)描述場景的例子:我們在各種各樣的市場銷售產(chǎn)品侠坎,并不斷的對我們的表現(xiàn)進(jìn)行度量蚁趁。市場、產(chǎn)品实胸、時間是維度他嫡,度量可以是銷售額或者利潤庐完。
ER模型:實(shí)體-關(guān)系模型门躯,使用3NF范式來劃分不同的實(shí)體讶凉,目的是為了消除冗余。主要用于操作型的系統(tǒng)中荷憋,因?yàn)閷κ挛锏母膬H觸及數(shù)據(jù)庫中的小塊單一的地方台谊。
維度模型:不完全遵守范式锅铅,用戶不能理解復(fù)雜的關(guān)系圖盐须,而且用戶的查詢往往很復(fù)雜贼邓,對查詢性能有高要求塑径。
OLAP與星型模式
OLAP
數(shù)據(jù)結(jié)構(gòu)為多維數(shù)據(jù)集(cube)填具,對維度進(jìn)行了設(shè)計(預(yù)計算、索引策略)碉就,可以方便的切片闷串、切塊和上鉆下鉆烹吵。
(類似報表肋拔,根據(jù)你查詢的屬性來決定是否上鉆下鉆只损。比如查詢國家的GDP跃惫,再要查詢各省的GDP爆存,只需要把省這一屬性加入進(jìn)去就可以了先较,反之也是一樣悼粮,不需要重新寫查詢)
另外就是支持大量的分析函數(shù)扣猫,比如窗口函數(shù)申尤、切片切塊函數(shù)等昧穿。
基于星型模式的維度建模(ROLAP)时鸵,詳細(xì)的、原子的信息使用星型模式加載磁奖。
OLAP的數(shù)據(jù)結(jié)構(gòu)差異大比搭,不同的工具之間的建立BI應(yīng)用比不同關(guān)系型數(shù)據(jù)庫之間建立BI更難南誊。
一旦維度發(fā)生了變化抄囚,就需要全部或部分重新處理數(shù)據(jù)幔托。因此可以方便的支持事務(wù)和周期性快照事實(shí)表重挑,但無法處理累計快照事實(shí)表谬哀。
自身支持特殊的查詢語法,能夠提供更豐富的數(shù)據(jù)分析能力谦屑,能夠提供更多更復(fù)雜的安全選項(xiàng)氢橙。
Cognos的Powerplay充蓝、Hyperion 的Essbase和微軟的Analysis Service這些產(chǎn)品都是MOLAP產(chǎn)品谓苟。.這類產(chǎn)品將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(甚至是文本文件涝焙、Excel文件)中抽取出來仑撞,存儲在自己的數(shù)據(jù)庫中。這種數(shù)據(jù)庫跟尋常我們所見的Oracle桶良、DB2這類關(guān)系數(shù)據(jù)庫不同之處在于陨帆,它是專有格式的采蚀,且沒有標(biāo)準(zhǔn)的訪問接口榆鼠。因此妆够,這些產(chǎn)品怎樣實(shí)現(xiàn)多維存儲也都不盡同樣神妹,大致的原理是以編程語言中多維數(shù)組的方式存放數(shù)據(jù)。度量值存放在數(shù)組的單元格中,而數(shù)組每一個維就相應(yīng)一個維度腰鬼,當(dāng)中熄赡,維元素就維的坐標(biāo)彼硫。
事實(shí)表
“事實(shí)”表示某個業(yè)務(wù)度量拧篮。事實(shí)表中的每行代表一個度量事件串绩。每行數(shù)據(jù)都有一個特定級別的粒度芜壁。同一事實(shí)表中的所有度量必須具有相同的粒度。
度量可分為可加顷牌、半可加窟蓝、不可加三類疗锐,對于可加與半可加可以進(jìn)行有效的匯總滑臊。
事實(shí)表分為三類:事物、周期性快照和累計快照
不要試圖以空字符串或0來表示沒有活動發(fā)生鬓椭,僅將發(fā)生的活動放入事實(shí)表小染,事實(shí)表將變得非常稀疏裤翩。
維表
維度是對與度量事件有關(guān)的環(huán)境的描述踊赠。
屬性應(yīng)該包含真實(shí)使用的詞匯而不是令人迷惑的縮寫筐带;盡量少在維度表中使用代碼伦籍,而應(yīng)該使用中文描述(兩者都保留也可)帖鸦;如果代碼中包含多個含義富蓄,比如代碼前半部分代表區(qū)號慢逾,后半部分代表號碼,應(yīng)該拆分成兩個維度变擒。
維度一般更關(guān)注簡單性和可訪問性寝志,因?yàn)槠湎噍^于事實(shí)表數(shù)據(jù)量更小材部,對于數(shù)據(jù)冗余的容忍度更高乐导,因此常常被設(shè)計為非規(guī)范化的物臂。
維度與度量的區(qū)分:
如果該列數(shù)據(jù)經(jīng)常變化棵磷,常參與計算,則通常為度量沉桌。如果是一個常量留凭,常用于約束或者標(biāo)識,則通常為維度艘狭。
Kimball的DW/BI架構(gòu)
DW/BI分為四個部分:
- 操作型源系統(tǒng)
查詢淺顯巢音,一次一條的查詢尽超。一般不維護(hù)歷史信息。不與起他操作型系統(tǒng)共享數(shù)據(jù)傲绣。 - ETL系統(tǒng)
ETL是將數(shù)據(jù)從源系統(tǒng)導(dǎo)入數(shù)據(jù)倉庫的第一步秃诵,ETL數(shù)據(jù)屬于數(shù)據(jù)倉庫的數(shù)據(jù)。
需要對數(shù)據(jù)進(jìn)行多種處理禁舷,如數(shù)據(jù)清洗牵咙、合并數(shù)據(jù)攀唯、復(fù)制數(shù)據(jù)等革答。
最后是將數(shù)據(jù)加載到目標(biāo)維度模型中残拐,劃分維度和事實(shí)。此處重點(diǎn)關(guān)注維度表的處理囊卜,如分配代理鍵栅组、為代碼提供描述玉掸、拆分或組合列醒叁、組合維度成為寬維度表等把沼。雖然可以在ETL過程中對數(shù)據(jù)進(jìn)行規(guī)范化改造饮睬,但同時會增加開發(fā)和硬件資源以及人力的負(fù)擔(dān)。因此建立規(guī)范化結(jié)構(gòu)并不是最終目標(biāo)割去,而應(yīng)該將主要的精力和資源投入到改進(jìn)業(yè)務(wù)決策的維度展現(xiàn)區(qū)域中。
- 展現(xiàn)區(qū)
- 數(shù)據(jù)應(yīng)當(dāng)以維度模型來展現(xiàn)间校,要么采用星型模式憔足,要么采用OLAP多維數(shù)據(jù)庫滓彰。
- 展現(xiàn)區(qū)必須包含詳細(xì)的原子數(shù)據(jù)揭绑,僅僅只有匯總數(shù)據(jù)不能滿足業(yè)務(wù)的查詢需求他匪。
- 展現(xiàn)區(qū)的數(shù)據(jù)可以圍繞業(yè)務(wù)過程度量事件來構(gòu)造(業(yè)務(wù)場景夸研?)亥至,業(yè)務(wù)過程往往有各部門的交叉姐扮,所以建立單一事實(shí)表時不僅僅從相似性來考慮,應(yīng)該考慮整個業(yè)務(wù)流程或業(yè)務(wù)場景壤靶。比如銷售只是業(yè)務(wù)中的一環(huán)贮乳,還有市場胀屿、財務(wù)宿崭、風(fēng)控等一系列相關(guān)的維度才写。
- 遵守總線結(jié)構(gòu)。保證維度的公共性和一致性吆鹤。
- 商業(yè)智能應(yīng)用
查詢疑务,數(shù)據(jù)挖掘梗醇,建模
其他 DW/BI架構(gòu)
獨(dú)立數(shù)據(jù)集市架構(gòu)
根據(jù)業(yè)務(wù)部門來構(gòu)建集市温鸽,即使不同的集市的數(shù)據(jù)源是同一個手负。對于單個的部門集市采取維度建模的方法竟终,但沒有采取維度建模理論的核心原則吱雏,比如關(guān)注細(xì)節(jié)瘾境、根據(jù)業(yè)務(wù)過程建模迷守、利用一致性維度實(shí)現(xiàn)一致性和集成等凯力。
優(yōu)點(diǎn)是開發(fā)成本低礼华,開發(fā)便捷圣絮。
缺點(diǎn)是數(shù)據(jù)冗余和低效,不同部門的數(shù)據(jù)采用的規(guī)則不盡相同凡涩,導(dǎo)致數(shù)據(jù)無法集成活箕,協(xié)調(diào)問題將會導(dǎo)致業(yè)務(wù)矛盾可款。Inmon架構(gòu)
與Kimball架構(gòu)不同之處在于闺鲸,ETL系統(tǒng)中獲得的原子數(shù)據(jù)保存在滿足第三范式的數(shù)據(jù)庫中(EDW企業(yè)級數(shù)據(jù)倉庫)翠拣,協(xié)調(diào)與集成也應(yīng)當(dāng)使用EDW來完成误墓,而且數(shù)據(jù)倉庫的原子數(shù)據(jù)是開放給用戶查詢的然想。
另外欣范,分析數(shù)據(jù)庫通常以部門為中心而不是圍繞業(yè)務(wù)過程來組織妨蛹,且通常是保存匯總數(shù)據(jù)晴竞。混合架構(gòu)
使用Inmon的EDW,但EDW與展現(xiàn)層隔離噩死。展現(xiàn)層使用Kimball的一致性維度颤难,既保存原子數(shù)據(jù)也保存匯總數(shù)據(jù)。
維度建模神話
- 維度模型僅包含匯總數(shù)據(jù)
因?yàn)闃I(yè)務(wù)需求的復(fù)雜性已维,匯總數(shù)據(jù)不可能滿足業(yè)務(wù)的所有需求行嗤,因此開放明細(xì)數(shù)據(jù)是必須的。認(rèn)同這一神話會導(dǎo)致僅在維度結(jié)構(gòu)中保存有限的歷史數(shù)據(jù)垛耳。 - 維度建模是部門級而不是企業(yè)級的
避免多次獲取同一個數(shù)據(jù)源栅屏,會產(chǎn)生多個不一致的分析數(shù)據(jù)庫捂敌。 - 維度模型是不可擴(kuò)展的
- 維度模型僅用于預(yù)測
設(shè)計應(yīng)該以業(yè)務(wù)過程為中心,能夠適應(yīng)變化既琴。維度模型應(yīng)當(dāng)以最詳細(xì)的粒度表達(dá)數(shù)據(jù)泡嘴,可以獲得最好的靈活性和可擴(kuò)展性。 - 維度模型不能集成
集成的核心是一致性維度,將一致性維度作為集中的、持久的主數(shù)據(jù)建立在ETL系統(tǒng)中屠列。
Kimball 維度建模技術(shù)
維度建模的步驟
- 與業(yè)務(wù)人員交流理解需求苛让,與數(shù)據(jù)源系統(tǒng)專家交流了解源數(shù)據(jù)實(shí)現(xiàn)厅须。
- 數(shù)據(jù)建模人員與業(yè)務(wù)人員研討確定模型。
2.1 選擇業(yè)務(wù)過程
2.2 聲明粒度
2.3 確認(rèn)維度
2.4 確認(rèn)事實(shí)
方便的擴(kuò)展維度模型
以下情況可以在不更改原有數(shù)據(jù)的情況下镀层,對模型進(jìn)行擴(kuò)展:
- 事實(shí)與已存在的事實(shí)表粒度一致時屋休,新增列即可叠艳。
- 維度與事實(shí)表的粒度一致時,新增外鍵列。
- 在維度表上新增列來擴(kuò)展維度屬性
- 將事實(shí)表的粒度降到更細(xì),在維度表上新增粒度更細(xì)的屬性。
事實(shí)表技術(shù)基礎(chǔ)
事實(shí)表結(jié)構(gòu):
每一行數(shù)據(jù)對應(yīng)一個度量事件,存儲的是可度量的數(shù)值。也包含可選的退化維度和時間戳。可加、半可加與不可加度量:
可加度量最為靈活,半可加度量如分期余額宋雏,不可加度量如百分比蚪燕。最好是將半可加與不可加的度量拆分成可加的度量。事實(shí)表的空值:
度量可以為空,但是外鍵(維度列)不能為空,應(yīng)使用默認(rèn)值替代。事實(shí)的一致性:
同名同義性,異名異義性事物事實(shí)表试溯、周期快照事實(shí)表、累計快照事實(shí)表:
最大的區(qū)別是時間窗口。
事物事實(shí)表可以是稀疏的。
周期快照事實(shí)表是周期性的,這里的周期指的是數(shù)據(jù)統(tǒng)計的周期,比如每天轩拨、每月砍濒、每年一條數(shù)據(jù)浇辜。
累計快照事實(shí)表包含多種度量轧钓,可能涉及多個業(yè)務(wù)過程荷逞,且會不定期更新膝迎。無事實(shí)的事實(shí)表:
沒有可以數(shù)字化度量的事實(shí),比如客戶參與活動的記錄叹誉。合并事實(shí)表:
雙網(wǎng)與直銷的辦卡申請酸舍。
維度表技術(shù)基礎(chǔ)
維度表有且只有單一的主鍵。通常扁平且不規(guī)范及刻,包含大量文本屬性丢氢。維度屬性常用于查詢的條件約束、分組定義和報表的描述性標(biāo)識蹭秋。
維度代理鍵:
即維度表的主鍵闰挡,非源表的自然鍵咧叭。由于數(shù)據(jù)來源不同且需要保存同一條數(shù)據(jù)的歷史,因此需要另外的無業(yè)務(wù)含義的代理鍵。(如自增主鍵评抚、GUID等)退化維度:
事實(shí)表的維度除了外鍵以外沒有其他內(nèi)容妇汗,這時將這種退化維度放入事實(shí)表中。非規(guī)范化的扁平維度:
為了達(dá)到簡化及速度稻艰。多層次維度:
維度包含多種層次,當(dāng)層次樹的枝干深度不一時途事,使用回填或橋接表。維度中的空值:
當(dāng)有維度行的維度屬性為空時奏夫,使用描述性的字符串來填充麻削。避免因?yàn)閿?shù)據(jù)庫系統(tǒng)對空值的處理不一致而導(dǎo)致問題淌铐。日期日歷維度:
日期維度作為主鍵更有意義。雜項(xiàng)維度:
合并維度弟跑。維度之間的組合是有限的灾前,并不是各個維度的笛卡爾積。支架維度:
維度表引用維度孟辑。應(yīng)該盡量使用事實(shí)表來引用維度哎甲,不同維度通過事實(shí)表最為紐帶。
使用一致性維度集成
當(dāng)不同的維度表的屬性具有相同列名和領(lǐng)域內(nèi)容時饲嗽,稱維度表具有一致性炭玫。
當(dāng)不同的事實(shí)表使用同一個一致性維度屬性時,這些事實(shí)表的數(shù)據(jù)就可以合并在一張報表中展示喝噪。
縮減維度:
在只使用部分維度屬性和維度行的時候础嫡,需要縮減維度指么。通常構(gòu)建聚集事實(shí)表時酝惧,需要縮減上卷維度。另一種情況是某個維度只能對應(yīng)到另一個相同粒度的維度的部分行時伯诬。價值鏈:
業(yè)務(wù)流程晚唇。為價值鏈上的每一個環(huán)節(jié)建立事務(wù)或者快照。總線架構(gòu):
不同的業(yè)務(wù)流程在企業(yè)級上的結(jié)構(gòu)盗似,通過一致性維度進(jìn)行集成哩陕。總線矩陣:
一個設(shè)計總線架構(gòu)的工具。行表示業(yè)務(wù)過程,列表示維度悍及。
處理緩慢變化維
- 類型0:原樣保留
維度屬性不會發(fā)生變化闽瓢,比如成為我行持卡客戶的時間。 - 類型1:重寫
原維度屬性的值被新值覆蓋心赶。比如是否綁定微信扣讼。 - 類型2:增加新行
插入一行新的數(shù)據(jù)。必須有生效時間缨叫、失效時間與行標(biāo)識三個新欄位椭符。比如卡片有效期。 - 類型3:增加新列
將舊值與新值放到不同的列中保存耻姥。當(dāng)對生效時間不敏感销钝,且僅需要知道上一次的舊屬性時才可使用。不常用琐簇。 - 類型4:增加微型維度
當(dāng)維度表數(shù)據(jù)量龐大蒸健,或者維度屬性經(jīng)常變化時,需要將維度屬性單獨(dú)劃分為微型維度婉商。 - 類型5:結(jié)合類型1與類型4
單獨(dú)劃分出微型維度纵装,并在原維度表中設(shè)置外鍵關(guān)聯(lián)到微型維度表。衛(wèi)星維度表可按照類型2的方式保存歷史狀態(tài)据某,只需要按照類型1的方式更新原維表即可橡娄。 - 類型6:
與類型2的不同之處在于,類型2是插入新行癣籽,類型6是插入歷史挽唉,修改當(dāng)前的行到最新的屬性值。
處理維度層次關(guān)系
分為固定深度層次與可變深度層次筷狼。
可變深度層次轉(zhuǎn)換為固定深度層次瓶籽。使用默認(rèn)值或葉子節(jié)點(diǎn)的值進(jìn)行填充」〔模或者使用橋接表結(jié)合路徑深度的方式塑顺。
高級事實(shí)表技術(shù)
避免蜈蚣事實(shí)表。帶有層次的維度表俏险,不是按照最低粒度來與事實(shí)表建立關(guān)聯(lián)严拒,而是每個層次的維度都與事實(shí)表建立關(guān)聯(lián)時,會產(chǎn)生蜈蚣事實(shí)表竖独。
數(shù)值型是否是度量裤唠,需要看其用途。如果數(shù)字值用于分組或過濾莹痢,應(yīng)把其看作維度种蘸。
避免頭指針事實(shí)表墓赴。該事實(shí)表是一種匯總,指向多個其他事實(shí)表航瞭。在操作型系統(tǒng)中常常出現(xiàn)诫硕。(比如說活動指向客群、事件與動作)
多種貨幣事實(shí)刊侯,在保存原有貨幣的事實(shí)的情況下痘括,新增一列保存單一標(biāo)準(zhǔn)幣種的事實(shí)。
同一度量值有多種單位的情況滔吠,可以將度量值以公認(rèn)的標(biāo)準(zhǔn)度量單位存儲纲菌,再保存標(biāo)準(zhǔn)度量與其他度量的轉(zhuǎn)換系數(shù)。
事實(shí)表之間絕對不能直接使用公共維度進(jìn)行關(guān)聯(lián)疮绷。應(yīng)該使用公共維度進(jìn)行Union翰舌。
事實(shí)表中與緩慢變化維的類型2類似,也可以加上數(shù)據(jù)生效時間冬骚、失效時間與行標(biāo)識椅贱,來表達(dá)事實(shí)表中緩慢變化的場景。(如關(guān)注與取關(guān)微信)
高級維度技術(shù)
多值維度與多值橋接表
行為維度
聚集事實(shí)維度
動態(tài)值范圍
步驟維度
審計維度