想要數(shù)據(jù)粒度的合理性铁蹈、模型的靈活性得到保證宽闲,并且能夠適應(yīng)未來的信息資源,需要遵守維度建模的一些原則握牧。否則容诬,很容易會遇到數(shù)據(jù)倉庫障礙,并且把用戶弄糊涂沿腰。在此览徒,大圣眾包威客平臺(www.dashengzb.cn)將為你提供幾個數(shù)據(jù)倉庫維度建模的原則,讓你妥妥地避開“陷阱”颂龙。
1.原子數(shù)據(jù)需詳細
維度建模應(yīng)該使用最基礎(chǔ)的原子數(shù)據(jù)進行填充习蓬,以支持不可預(yù)知的來自用戶查詢的過濾和分組請求纽什。
用戶通常不希望每次只看到一個單一的記錄,但是你無法預(yù)測用戶想要掩蓋或顯示哪些數(shù)據(jù)躲叼。如果只有匯總數(shù)據(jù)芦缰,那么你已經(jīng)設(shè)定了數(shù)據(jù)的使用模式,當用戶想要深入挖掘數(shù)據(jù)時枫慷,他們就會遇到障礙让蕾。盡管原子數(shù)據(jù)通過概要維度建模補充也是一種辦法,但是這樣做的話或听,企業(yè)用戶便無法只在匯總數(shù)據(jù)上工作探孝,畢竟,他們需要原始數(shù)據(jù)回答不斷變化的問題誉裆。
2.使用代理鍵
按順序分配代理鍵(除了日期維度)可以獲得一系列的操作優(yōu)勢再姑,包括更小的事實表、索引以及性能改善找御。如果你正在跟蹤維度屬性的變化元镀,并需要為每個變化使用一個新的維度記錄,那么代理鍵就顯得十分重要了霎桅。因為栖疑,即使你的商業(yè)用戶沒有初始化跟蹤屬性改變的設(shè)想值,使用代理也會使下游策略變化更寬松滔驶。另外遇革,代理也允許使用多個業(yè)務(wù)鍵映射到一個普通的配置文件中,這有利于緩沖意想不到的業(yè)務(wù)活動揭糕。
3.標記和過濾范圍值
值得注意的是萝快,編碼、關(guān)聯(lián)的解碼著角、用于標記和查詢過濾的描述符揪漩,應(yīng)該被捕獲到維度表中,避免在事實表中存儲神秘的編碼字段或龐大的描述符字段吏口。同樣的奄容,不要只在維度表中存儲編碼,而要假定用戶不需要描述性的解碼产徊,或它們將在BI應(yīng)用程序中得到解決昂勒。如果它是一個行/列標記或下拉菜單過濾器,那么它應(yīng)該當作一個維度屬性處理舟铜。
另外戈盈,事實表的外鍵不應(yīng)該為空,同時在維度表的屬性字段中應(yīng)使用“NA”或另一個默認值來替換空值谆刨,這也是明智的塘娶,可以減少用戶的困惑归斤。
4.一致的維度,集成整個企業(yè)的數(shù)據(jù)
企業(yè)數(shù)據(jù)倉庫一致的維度(也叫做通用維度血柳、標準或參考維度)是最基本的原則官册,它在ETL系統(tǒng)中管理一次后生兆,在所有事實表中都可以重用难捌。
一致的維度,在整個維度模型中可以獲得一致的描述屬性鸦难,可以支持從多個業(yè)務(wù)流程中整合數(shù)據(jù)根吁。企業(yè)數(shù)據(jù)倉庫總線矩陣是最關(guān)鍵的架構(gòu)藍圖,它展現(xiàn)了組織的核心業(yè)務(wù)流程和關(guān)聯(lián)的維度合蔽,重用一致的維度可以縮短產(chǎn)品的上市時間击敌,也消除了冗余設(shè)計和開發(fā)過程,但一致的維度需要在數(shù)據(jù)管理和治理方面有較大的投入拴事。
5.圍繞業(yè)務(wù)流程建模
業(yè)務(wù)流程是組織執(zhí)行的活動沃斤,它們代表可測量的事件,如下一個訂單或做一次結(jié)算刃宵。業(yè)務(wù)流程通常會捕獲或生成唯一的與某個事件相關(guān)的性能指標衡瓶,當這些數(shù)據(jù)轉(zhuǎn)換成事實后,每個業(yè)務(wù)流程都會用一個原子事實表表示牲证。除了單個流程事實表外哮针,有時會以多個流程事實表合并成一個事實表,而且合并事實表是對單一流程事實表的一個很好的補充坦袍。
6.相同的粒度或同級的詳細程度
在組織事實表時十厢,粒度上有三個基本原則:事務(wù)、周期快照捂齐、累加快照蛮放。無論粒度類型如何,事實表中的度量單位都必須達到相同水平的詳細程度奠宜;如果事實表中的事實表現(xiàn)的粒度不一樣筛武,企業(yè)用戶容易混淆,BI應(yīng)用程序也會隨之變得不堪一擊挎塌,從而導(dǎo)致返回的結(jié)果不對等低級錯誤的發(fā)生徘六。
7.一對一的關(guān)聯(lián)日期維度表
如上文所說,每個可測量事件總有一個日期戳信息榴都,每個事實表至少需要有一個外鍵待锈,能夠關(guān)聯(lián)到一個日期維度表,它的粒度就是一天嘴高。這個方法竿音,利用的是日歷屬性和非標準的關(guān)于測量事件日期的特性和屎,如財務(wù)月和公司假日的指示符;當然春瞬,有時一個事實表中會有多個日期外鍵柴信。
8.解決多對一關(guān)系
屬性之間分層的、多對一(M:1)的關(guān)系宽气,通常是未規(guī)范化的随常,或者被收縮到扁平型的維度表中。如果你曾經(jīng)有過為事務(wù)型系統(tǒng)設(shè)計實體關(guān)系模型的經(jīng)歷萄涯,那你一定要摒棄掉舊有的思維模式绪氛,將其規(guī)范化或?qū):1關(guān)系拆分成更小的子維度。維度反向規(guī)范化涝影,便是維度建模中常用的詞匯枣察。
一對一的關(guān)系,如一個產(chǎn)品描述對應(yīng)一個產(chǎn)品代碼燃逻,可以在維度表中處理序目。然而,在單個維度表中伯襟,多對一(M:1)的關(guān)系也非常常見猿涨,在事實表中偶爾也有多對一關(guān)系,如當維度表中有上百萬條記錄逗旁,而它推出的屬性又經(jīng)常發(fā)生變化時嘿辟。不管怎樣,在事實表中要慎用M:1關(guān)系片效。
9.解決多對多關(guān)系
由于事實表存儲的是業(yè)務(wù)流程事件的結(jié)果红伦,因此在它們的外鍵之間存在多對多(M:M)的關(guān)系,如多個倉庫中的多個產(chǎn)品在多天銷售淀衣,這些外鍵字段便不能為空昙读。有時一個維度可以為單個測量事件賦予多個值,如一個保健對應(yīng)多個診斷膨桥,或多個客戶有一個銀行賬號蛮浑,在這些情況下,它的不合理直接解決了事實表中多值維度只嚣,這可能違反了測量事件的天然粒度沮稚,因此我們使用多對多、雙鍵橋接表連接事實表册舞。
10.平衡需求和現(xiàn)實蕴掏,提供DW/BI解決方案
維度建模需要不斷在用戶需求和數(shù)據(jù)源事實之間進行平衡,才能夠提交可執(zhí)行性好的設(shè)計。更重要的是盛杰,要符合業(yè)務(wù)的需要挽荡,需求和事實之間的平衡是DW/BI從業(yè)人員必須面對的事實,無論是集中在維度建模即供,還是項目策略定拟、技術(shù)/ETL/BI架構(gòu),或開發(fā)/維護規(guī)劃逗嫡,都要面對這一事實青自。
總的來說,數(shù)據(jù)倉庫維度建模需要注意的部分挺多祸穷,在建模的過程中務(wù)必要多留心眼性穿,細致謹慎勺三,這才是成功之道雷滚。尤其進入大數(shù)據(jù)時代,與數(shù)據(jù)打交道的機會愈趨增多吗坚,要想成為工作中的“常勝將軍”祈远,切忌馬虎。
(更多大數(shù)據(jù)與商業(yè)智能領(lǐng)域干貨商源、兼職機會請關(guān)注大圣眾包平臺车份,或添加大圣花花個人微信號(dashenghuaer),拉你入bigdata&BI交流群330648564牡彻。)