01 數(shù)據(jù)倉庫概要
1.1.數(shù)據(jù)倉庫起因
在建設(shè)數(shù)據(jù)倉庫之前,數(shù)據(jù)散落在企業(yè)各部門應(yīng)用的數(shù)據(jù)存儲中,它們之間有著復(fù)雜的業(yè)務(wù)連接關(guān)系,從整體上看就如一張巨大的蜘蛛網(wǎng):結(jié)構(gòu)上錯綜復(fù)雜,卻又四通八達。在企業(yè)級數(shù)據(jù)應(yīng)用上單一業(yè)務(wù)使用方便,且靈活多變;但涉及到跨業(yè)務(wù)、多部門聯(lián)合應(yīng)用就會存在:①數(shù)據(jù)來源多樣化,管理決策數(shù)據(jù)過于分散;②數(shù)據(jù)缺乏標準,難以整合;③數(shù)據(jù)口徑不統(tǒng)一,可信度低;④缺乏數(shù)據(jù)管控體系,數(shù)據(jù)質(zhì)量難以保證。如果企業(yè)在數(shù)據(jù)建設(shè)方面沒有一個整體的規(guī)劃,而采取自然演化的方式,那么在未來數(shù)據(jù)應(yīng)用的過程中,將不得不面對以下問題:- 數(shù)據(jù)缺乏可信性:缺乏統(tǒng)一的維度;數(shù)據(jù)算法上存在差異;抽取的多層次;外部數(shù)據(jù)問題;無起始的公共數(shù)據(jù)源;
- 生產(chǎn)率低:需要根據(jù)全部數(shù)據(jù)生成企業(yè)報表;定位數(shù)據(jù)需要瀏覽大量文件;抽取程序很多,并且每個都是定制的,不得不克服很多技術(shù)上的障礙。
- 數(shù)據(jù)轉(zhuǎn)化為信息的不可行性:數(shù)據(jù)沒有集成化;缺乏將數(shù)據(jù)轉(zhuǎn)化為信息所需的歷史數(shù)據(jù)。
基于以上這些的問題,就產(chǎn)生了建立企業(yè)級數(shù)據(jù)倉庫的必要性。數(shù)據(jù)倉庫是一個面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的(隨著時間流逝發(fā)生變化)的數(shù)據(jù)集合。它主要支持企業(yè)管理人員決策分析。數(shù)據(jù)倉庫收集了企業(yè)相關(guān)的內(nèi)部和外部各個業(yè)務(wù)系統(tǒng)數(shù)據(jù)源、歸檔文件等一系列歷史數(shù)據(jù),最后轉(zhuǎn)化成企業(yè)需要的戰(zhàn)略決策信息。1.2.1.數(shù)據(jù)倉庫特點
面向主題的:普通的操作型數(shù)據(jù)庫主要面向事務(wù)性處理,而數(shù)據(jù)倉庫中的所有數(shù)據(jù)一般按照主題進行劃分。主題是對業(yè)務(wù)數(shù)據(jù)的一種抽象,是從較高層次上對信息系統(tǒng)中的數(shù)據(jù)進行歸納和整理。面向主題的數(shù)據(jù)可以劃分成兩部分:根據(jù)原系統(tǒng)業(yè)務(wù)數(shù)據(jù)的特點進行主題的抽取和確定每個主題所包含的數(shù)據(jù)內(nèi)容。
例如客戶主題、產(chǎn)品主題、財務(wù)主題等;而客戶主題包括客戶基本信息、客戶信用信息、客戶資源信息等內(nèi)容。分析數(shù)據(jù)倉庫主題的時候,一般方法是先確定幾個基本的主題,然后再將范圍擴大,最后再逐步求精。
集成性:面向操作型的數(shù)據(jù)庫通常是異構(gòu)的、并且相互獨立,所以無法對信息進行概括和反映信息的本質(zhì)。而數(shù)據(jù)倉庫中的數(shù)據(jù)是經(jīng)過數(shù)據(jù)的抽取、清洗、切換、加載得到的,所以為了保證數(shù)據(jù)不存在二義性,必須對數(shù)據(jù)進行編碼統(tǒng)一和必要的匯總,以保證數(shù)據(jù)倉庫內(nèi)數(shù)據(jù)的一致性。數(shù)據(jù)倉庫在經(jīng)歷數(shù)據(jù)集成階段后,使數(shù)據(jù)倉庫中的數(shù)據(jù)都遵守統(tǒng)一的編碼規(guī)則,并且消除許多冗余數(shù)據(jù)。
穩(wěn)定性:數(shù)據(jù)倉庫中的數(shù)據(jù)反映的都是一段歷史時期的數(shù)據(jù)內(nèi)容,它的主要操作是查詢、分析而不進行一般意義上的更新(數(shù)據(jù)集成前的操作型數(shù)據(jù)庫主要完成數(shù)據(jù)的增加、修改、刪除、查詢),一旦某個數(shù)據(jù)進入到數(shù)據(jù)倉庫后,一般情況下數(shù)據(jù)會被長期保留,當超過規(guī)定的期限才會被刪除。通常數(shù)據(jù)倉庫需要做的工作就是加載、查詢和分析,一般不進行任何修改操作,是為了企業(yè)高層人員決策分析之用。
反映歷史變化:數(shù)據(jù)倉庫不斷從操作型數(shù)據(jù)庫或其他數(shù)據(jù)源獲取變化的數(shù)據(jù),從而分析和預(yù)測需要的歷史數(shù)據(jù),所以一般數(shù)據(jù)倉庫中數(shù)據(jù)表的鍵碼(維度)都含有時間鍵,以表明數(shù)據(jù)的歷史時期信息,然后不斷增加新的數(shù)據(jù)內(nèi)容。通過這些歷史信息可以對企業(yè)的發(fā)展歷程和趨勢做出分析和預(yù)測。數(shù)據(jù)倉庫的建設(shè)需要大量的業(yè)務(wù)數(shù)據(jù)作為積累,并將這些寶貴的歷史信息經(jīng)過加工、整理,最后提供給決策分析人員,這是數(shù)據(jù)倉庫建設(shè)的根本目的。1.2.2.數(shù)據(jù)倉庫優(yōu)勢
- 形成業(yè)務(wù)單一視圖,數(shù)據(jù)標準化
- 數(shù)據(jù)管控體系,數(shù)據(jù)質(zhì)量得以保證
1.2.3.數(shù)據(jù)倉庫組成
- 數(shù)據(jù)抽取、轉(zhuǎn)換、導(dǎo)入(ETL)
- 操作型的數(shù)據(jù)和分析型的數(shù)據(jù)
- 報表、查詢、EIS工具(主管信息系統(tǒng)---服務(wù)于組織的高層經(jīng)理的一類特殊的信息系統(tǒng)能夠迅速、方便、直觀(用圖形)地提供綜合信息)
1.2.4.數(shù)據(jù)倉庫建設(shè)特征要素
數(shù)據(jù)倉庫項目不是技術(shù)主導(dǎo)型項目,是一個大的集成項目,更注重方法和流程
數(shù)據(jù)倉庫項目需要持續(xù)的建設(shè)數(shù)據(jù)倉庫項目需要持續(xù)的持續(xù)的成熟評估和改進的建議不同階段的實施方法需要技術(shù)和業(yè)務(wù)緊密結(jié)合的組織架構(gòu)的支撐
數(shù)據(jù)倉庫項目需要堅持不懈的推動業(yè)務(wù)的參與數(shù)據(jù)倉庫這種長周期大型項目需要建立有效的管理機制。1.3.數(shù)據(jù)倉庫與其它數(shù)據(jù)管理系統(tǒng)的區(qū)別
1.3.1.數(shù)據(jù)倉庫和數(shù)據(jù)庫的區(qū)別
數(shù)據(jù)庫是面向應(yīng)用的、事務(wù)型的數(shù)據(jù)處理,一般來說具有實時性較高,數(shù)據(jù)檢索量較小,只存儲當前數(shù)據(jù),訪問頻率高,要求的響應(yīng)時間短,面對多為普通用戶,且數(shù)量較大的特點。而數(shù)據(jù)倉庫主要是面向主題的、分析型的數(shù)據(jù)處理,具有實時性要求不高,數(shù)據(jù)檢索量較大,存儲大量歷史數(shù)據(jù)和當前數(shù)據(jù),訪問頻率中低,響應(yīng)時間較長,主要針對特殊用戶群體,用戶量較小的特點。其中事務(wù)型和分析型處理數(shù)據(jù)是有區(qū)別的:事物型處理數(shù)據(jù)一般來說對性能要求較為嚴格,數(shù)據(jù)是事務(wù)驅(qū)動的,主要面向應(yīng)用,存儲的一般都是即時性、細節(jié)性的數(shù)據(jù),數(shù)據(jù)是可更新的。分析型處理數(shù)據(jù)一般來說對查詢性能要求較高,數(shù)據(jù)是分析驅(qū)動的,主要面向決策分析,存儲的一般都是歷史、匯總性的數(shù)據(jù),數(shù)據(jù)一般不會更新。1.3.2.數(shù)據(jù)倉庫與ODS區(qū)別
ODS是這樣一種數(shù)據(jù)存儲系統(tǒng),它將來自不同數(shù)據(jù)源的數(shù)據(jù)(各種操作型數(shù)據(jù)庫、外部數(shù)據(jù)源等)通過ETL過程匯聚整合成面向主題的、集成的、可更新的、當前或接近當前的、企業(yè)全局一致的數(shù)據(jù)集合(主要是最新的或者最近的細節(jié)數(shù)據(jù)以及可能需要的匯總數(shù)據(jù)),用于滿足企業(yè)準實時的OLAP操作和企業(yè)全局的OLTP操作,并為數(shù)據(jù)倉庫提供集成后的數(shù)據(jù),將數(shù)據(jù)倉庫系統(tǒng)中的ETL過程下沉到ODS中完成以減輕數(shù)據(jù)倉庫的壓力。面向主題的---進入ODS的數(shù)據(jù)是來源于各個操作型數(shù)據(jù)庫以及其他外部數(shù)據(jù)源,數(shù)據(jù)進入ODS前必須經(jīng)過
ETL過程;集成的---ODS的數(shù)據(jù)來源于各個操作型數(shù)據(jù)庫,同時也會在數(shù)據(jù)清理加工后進行一定程度的綜合;可更新的---可以聯(lián)機修改。這一點區(qū)別于數(shù)據(jù)倉庫;當前或接近當前的---“當前”是指數(shù)據(jù)在存取時刻是最新的,“接近當前”是指存取的數(shù)據(jù)是最近一段時間得到的。①存放的數(shù)據(jù)內(nèi)容不同:ODS中主要存放當前或接近當前的數(shù)據(jù)、細節(jié)數(shù)據(jù),可以進行聯(lián)機更新。DW中主要存放細節(jié)數(shù)據(jù)和歷史數(shù)據(jù),以及各種程度的綜合數(shù)據(jù),不能進行聯(lián)機更新。ODS中也可以存放綜合數(shù)據(jù),但只在需要的時候生成。②數(shù)據(jù)規(guī)模不同:由于存放的數(shù)據(jù)內(nèi)容不同,因此DW的數(shù)據(jù)規(guī)模遠遠超過ODS。③技術(shù)支持不同:ODS需要支持面向記錄的聯(lián)機更新,并隨時保證其數(shù)據(jù)與數(shù)據(jù)源中的數(shù)據(jù)一致。DW則需要支持ETL技術(shù)和數(shù)據(jù)快速存取技術(shù)等。④面向的需求不同:ODS主要面向兩個需求:一是用于滿足企業(yè)進行全局應(yīng)用的需要,即企業(yè)級的OLTP和即時的OLAP;二是向數(shù)據(jù)倉庫提供一致的數(shù)據(jù)環(huán)境用于數(shù)據(jù)抽取。DW主要用于高層戰(zhàn)略決策,供挖掘分析使用。⑤使用者不同:ODS主要使用者是企業(yè)中層管理人員,他們使用ODS進行企業(yè)日常管理和控制。DW主要使用者是企業(yè)高層和數(shù)據(jù)分析人員。1.3.3.數(shù)據(jù)倉庫與數(shù)據(jù)集市
1、數(shù)據(jù)集市定義
數(shù)據(jù)集市是一組特定的、針對某個主題域、某個部門或者某些特殊用戶而進行分類的數(shù)據(jù)集合,也可以說是小型的數(shù)據(jù)倉庫。
2、數(shù)據(jù)倉庫與數(shù)據(jù)集市的區(qū)別
數(shù)據(jù)倉庫是企業(yè)級的,能為整個企業(yè)各個部門的運行提供決策支持手段;而數(shù)據(jù)集市則是一種微型的數(shù)據(jù)倉庫,它通常有更少的數(shù)據(jù),更少的主題區(qū)域,以及更少的歷史數(shù)據(jù),因此是部門級的,一般只能為某個局部范圍內(nèi)的管理人員服務(wù),因此也稱之為部門級數(shù)據(jù)倉庫。
02 數(shù)據(jù)倉庫架構(gòu)
2.1.數(shù)據(jù)設(shè)計方法
數(shù)據(jù)倉庫建立之前,就必須考慮其實現(xiàn)方法,通常有自頂向下、自底向上和兩者結(jié)合進行的這樣三種實現(xiàn)方案。
2.1.1.自頂向下
實現(xiàn)自頂向下的實現(xiàn)需要在項目開始時完成更多計劃和設(shè)計工作,這就需要涉及參與數(shù)據(jù)倉庫實現(xiàn)的每個工作組、部門或業(yè)務(wù)線中的人員。要使用的數(shù)據(jù)源、安全性、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)質(zhì)量、數(shù)據(jù)標準和整個數(shù)據(jù)模型的有關(guān)決策一般需要在真正的實現(xiàn)開始之前就完成。
2.1.2.自底向上
實現(xiàn)自底向上的實現(xiàn)包含數(shù)據(jù)倉庫的規(guī)劃和設(shè)計,無需等待安置好更大業(yè)務(wù)范圍的數(shù)據(jù)倉庫設(shè)計。這并不意味著不會開發(fā)更大業(yè)務(wù)范圍的數(shù)據(jù)倉庫設(shè)計;隨著初始數(shù)據(jù)倉庫實現(xiàn)的擴展,將逐漸增加對它的構(gòu)建。現(xiàn)在,該方法得到了比自頂向下方法更廣泛的接受,因為數(shù)據(jù)倉庫的直接結(jié)果可以實現(xiàn),并可以用作擴展更大業(yè)務(wù)范圍實現(xiàn)的證明。
2.1.3.兩者結(jié)合
實現(xiàn)每種實現(xiàn)方法都有利弊。在許多情況下,最好的方法可能是某兩種的組合。該方法的關(guān)鍵之一就是確定業(yè)務(wù)范圍的架構(gòu)需要用于支持集成的計劃和設(shè)計的程度,因為數(shù)據(jù)倉庫是用自底向上的方法進行構(gòu)建。
在使用自底向上或階段性數(shù)據(jù)倉庫項目模型來構(gòu)建業(yè)務(wù)范圍架構(gòu)中的一系列數(shù)據(jù)集市時,您可以一個接一個地集成不同業(yè)務(wù)主題領(lǐng)域中的數(shù)據(jù)集市,從而形成設(shè)計良好的業(yè)務(wù)數(shù)據(jù)倉庫。這樣的方法可以極好地適用于業(yè)務(wù)。在這種方法中,可以把數(shù)據(jù)集市理解為整個數(shù)據(jù)倉庫系統(tǒng)的邏輯子集,換句話說數(shù)據(jù)倉庫就是一致化了的數(shù)據(jù)集市的集合。
2.2.數(shù)據(jù)倉庫架構(gòu)選型
數(shù)據(jù)倉庫架構(gòu)的選取,與其所處的企業(yè)環(huán)境和業(yè)務(wù)的發(fā)展有著密切的關(guān)系:Inmon提倡的數(shù)據(jù)倉庫建設(shè)方法,需要數(shù)據(jù)倉庫建設(shè)人員自頂向下進行建設(shè),數(shù)據(jù)倉庫開發(fā)人員需要在數(shù)據(jù)倉庫建設(shè)之前對企業(yè)各業(yè)務(wù)線進行深入的調(diào)研,有著非常全面的了解,然后根據(jù)企業(yè)各業(yè)務(wù)特點進行主題域劃分。這種建設(shè)方式建設(shè)周期比較長,規(guī)劃設(shè)計比較復(fù)雜,但是一旦建成,這個集中式的體系結(jié)構(gòu)將提供更強的一致性和靈活性,并且從長遠來看將真正節(jié)省資源和工作。
Kimball提倡的數(shù)據(jù)倉庫僅僅是構(gòu)成它的數(shù)據(jù)集市的聯(lián)合,各部門或業(yè)務(wù)可以根據(jù)自身的發(fā)展,建設(shè)符合自身主題的數(shù)據(jù)集市,并持續(xù)豐富完善這些數(shù)據(jù)集市。在應(yīng)對企業(yè)級數(shù)據(jù)需求時,將這些數(shù)據(jù)集市的維度信息進行統(tǒng)一整理規(guī)范,然后通過一致的維度信息,將這些數(shù)據(jù)集市連接起來,使數(shù)據(jù)集市形成一個覆蓋企業(yè)所有部門或業(yè)務(wù)的數(shù)據(jù)倉庫,對外提供服務(wù)。
根據(jù)企業(yè)發(fā)展階段和業(yè)務(wù)發(fā)展的速度建議:傳統(tǒng)的、業(yè)務(wù)成熟的企業(yè)可以考慮采用Inmon方法建設(shè)數(shù)據(jù)倉庫;業(yè)務(wù)復(fù)雜而且差異較大、發(fā)展速度又非常快的企業(yè)可以考慮Kimball方法建設(shè)數(shù)據(jù)倉庫。
2.3.企業(yè)發(fā)展中的數(shù)據(jù)倉庫建設(shè)變遷
企業(yè)或新部門,在初期發(fā)展過程中業(yè)務(wù)量少、組織形式相對簡單。使得數(shù)倉建設(shè)人員可以站在全局的高度,俯視整個公司的業(yè)務(wù)流程,對其進行梳理歸類,并抽取數(shù)據(jù)模型。以自上而下的方式建設(shè)數(shù)據(jù)倉庫。所以在初期數(shù)據(jù)倉庫建設(shè)的過程中基本采用了Inmon提倡的數(shù)據(jù)倉庫建設(shè)方法,采用了DataSource-->ODS→EDW→DM-->APP的結(jié)構(gòu)。即由ODS層完成各部門數(shù)據(jù)源的集成,在ODS的基礎(chǔ)上建設(shè)了覆蓋公司所有業(yè)務(wù)的包含眾多主題的統(tǒng)一的數(shù)據(jù)倉庫,然后由這個統(tǒng)一的數(shù)據(jù)倉庫作為唯一的數(shù)據(jù)源,為各部門的數(shù)據(jù)集市提供數(shù)據(jù)支持。
但是一旦企業(yè)或部門發(fā)展速度非???,業(yè)務(wù)量急劇增大,而且業(yè)務(wù)的組織形式趨于復(fù)雜,不同的業(yè)務(wù)之間可能存在巨大的差距。數(shù)據(jù)倉庫的建設(shè)如果再繼續(xù)沿用自傷而下的方式就會帶來很多困難,例如在Inmon模式下EDW規(guī)劃復(fù)雜、建設(shè)周期長,不能非??焖俚捻憫?yīng)各部門的需求,所以該方案逐步不能適應(yīng)公司的發(fā)展。為了適應(yīng)企業(yè)的發(fā)展,經(jīng)過數(shù)倉開發(fā)人員的不斷探索嘗試,基本上傾向于采用混合模式建設(shè)數(shù)據(jù)倉庫,即采用Inmon+Kimball的變種模式。
與原有的架構(gòu)最大的區(qū)別是:各部門數(shù)據(jù)集市的數(shù)據(jù)源并不是唯一的從EDW中獲取,而是從各部門數(shù)據(jù)源所集成到的ODS層獲取。但是有各部門數(shù)據(jù)集市也會涉及到跨部門的數(shù)據(jù)統(tǒng)計,所以這種公司級的數(shù)據(jù)應(yīng)用還是從企業(yè)級數(shù)據(jù)倉庫中獲取。也就是各部門數(shù)據(jù)集市來支持各部門業(yè)務(wù)需求;企業(yè)級數(shù)據(jù)需求,從各部門數(shù)據(jù)集市或ODS層抽取公共模型進行建設(shè)(例如:公司級訂單、用戶等),并且在這里將各部門集市所依賴的公共維度進行統(tǒng)一,來支持公司級或跨部門的業(yè)務(wù)需求。
03 數(shù)據(jù)倉庫建設(shè)中的數(shù)據(jù)建模
數(shù)據(jù)模型是指實體、屬性、實體之間的關(guān)系對業(yè)務(wù)概念和邏輯規(guī)則進行統(tǒng)一的定義,命名和編碼,主要描述企業(yè)的信息需求和業(yè)務(wù)規(guī)則,是業(yè)務(wù)人員和開發(fā)人員溝通的語言,是數(shù)據(jù)倉庫設(shè)計工作的第一步。
首先我們需要解決三個問題:①什么是數(shù)據(jù)模型;②為什么需要數(shù)據(jù)模型;③如果創(chuàng)建數(shù)據(jù)模型;
3.1.什么是數(shù)據(jù)模型
數(shù)據(jù)模型是抽象描述現(xiàn)實世界的一種工具和方法,是通過抽象的實體及實體之間聯(lián)系的形式,來表示現(xiàn)實世界中事務(wù)的相互關(guān)系的一種映射。在這里數(shù)據(jù)模型表現(xiàn)的抽象的實體和實體之間的關(guān)系,通過對實體和實體之間關(guān)系的定義和描述,來表達實際的業(yè)務(wù)中具體的業(yè)務(wù)關(guān)系。
數(shù)據(jù)倉庫模型是數(shù)據(jù)模型中針對特定的數(shù)據(jù)倉庫應(yīng)用系統(tǒng)的一種特定的數(shù)據(jù)模型,一般的來說,我們數(shù)據(jù)倉庫模型分為以下幾個層次:業(yè)務(wù)模型、領(lǐng)域模型(主題域模型)、邏輯模型、物理模型。因此整個數(shù)據(jù)倉庫建模過程中,一般需要經(jīng)歷四個過程:
- 業(yè)務(wù)建模:主要解決業(yè)務(wù)層面的分解和程序化。
- 領(lǐng)域(主題域)建模:主要是針對業(yè)務(wù)模型進行抽象處理,生成領(lǐng)域(主題域)概念模型。
- 邏輯建模:主要是將領(lǐng)域模型的概念實體以實體之間的關(guān)系進行數(shù)據(jù)庫層次的邏輯化。
- 物理建模:主要解決邏輯模型的物理化以及性能等一些具體的技術(shù)問題。
因此在整個數(shù)據(jù)倉庫的模型的設(shè)計和架構(gòu)中,即涉及到業(yè)務(wù)知識,也涉及到具體的技術(shù),我們既需要了解豐富的行業(yè)經(jīng)驗,同時也需要一定的信息技術(shù)來幫助我們實現(xiàn)我們的數(shù)據(jù)模型,最重要的是,我們還需要一個非常適用的方法論,來指導(dǎo)我們自己針對我們的業(yè)務(wù)進行抽象、處理、生成各個階段的模型。3.2.為什么需要數(shù)據(jù)模型
在數(shù)據(jù)倉庫的建設(shè)中,我們一再強調(diào)需要數(shù)據(jù)模型,那么數(shù)據(jù)模型究竟為什么這么重要呢?首先我們需要了解整個數(shù)據(jù)倉庫的建設(shè)的發(fā)展史。數(shù)據(jù)倉庫的發(fā)展大致經(jīng)歷了這樣的三個過程:- 簡單的報表階段:這個階段,系統(tǒng)的主要目標是解決一些日常的工作中業(yè)務(wù)人員需要的報表,以及生成一些簡單的能夠幫助領(lǐng)導(dǎo)進行決策所需要的匯總數(shù)據(jù)。這個階段的大部分表現(xiàn)形式為數(shù)據(jù)庫和前段報表工具。
- 數(shù)據(jù)集市階段:這個階段主要是根據(jù)某個業(yè)務(wù)部門的需要,進行一定的數(shù)據(jù)的采集,整理,按照業(yè)務(wù)人員的需求,進行多維報表的展現(xiàn),能夠提供對特定業(yè)務(wù)指導(dǎo)的數(shù)據(jù),并且能夠提供特定的領(lǐng)導(dǎo)決策數(shù)據(jù)。
- 數(shù)據(jù)倉庫階段:這個階段主要是按照一定的數(shù)據(jù)模型,對整個企業(yè)的數(shù)據(jù)進行采集整理,并且能夠按照各個業(yè)務(wù)部門的需要,提供跨部門的,完全一致的業(yè)務(wù)報表數(shù)據(jù),能夠通過數(shù)據(jù)倉庫生成對業(yè)務(wù)具有指導(dǎo)性的數(shù)據(jù),同時為領(lǐng)導(dǎo)決策提供全面的數(shù)據(jù)支持。
通過對數(shù)據(jù)倉庫建設(shè)的發(fā)展階段,我們能夠看出,數(shù)據(jù)倉庫的建設(shè)和數(shù)據(jù)集市的建設(shè)的重要區(qū)別就在于數(shù)據(jù)模型的支持。因此,數(shù)據(jù)模型的建設(shè),對于我們數(shù)據(jù)倉庫的建設(shè),有著決定性的意義。一般來說,數(shù)據(jù)模型的建設(shè)主要能夠幫助我們解決以下的一些問題:進行全面的業(yè)務(wù)梳理,改進業(yè)務(wù)流程。在業(yè)務(wù)模型建設(shè)的階段,能夠幫助我們的企業(yè)或者管理機構(gòu)對本單位的業(yè)務(wù)進行全面的梳理。通過業(yè)務(wù)模型的建設(shè),我們應(yīng)該能夠全面了解該單位的業(yè)務(wù)架構(gòu)圖和整個業(yè)務(wù)的運行情況,能夠?qū)I(yè)務(wù)按照特定的規(guī)律進行分門別類和程序化,同時,幫助我們進一步的改進業(yè)務(wù)的流程,提高業(yè)務(wù)效率,指導(dǎo)我們業(yè)務(wù)部門的生產(chǎn)。建設(shè)全方位的數(shù)據(jù)視角,消滅信息孤島和數(shù)據(jù)差異。通過數(shù)據(jù)倉庫的模型建設(shè),能夠為企業(yè)提供一個整體的數(shù)據(jù)視角,不再是各個部門只是關(guān)注自己的數(shù)據(jù),而且通過模型的建設(shè),勾勒出部門之間的聯(lián)系,幫助消滅各部門之間的信息孤島的問題,更為重要的時,通過數(shù)據(jù)模型的建設(shè),能夠保證這個企業(yè)的數(shù)據(jù)一致性,各個部門之間數(shù)據(jù)的差異將會得到有效解決。解決業(yè)務(wù)的變動和數(shù)據(jù)倉庫的靈活性。通過數(shù)據(jù)模型的建設(shè),能夠很好的分離出底層技術(shù)的實現(xiàn)和上層業(yè)務(wù)的展現(xiàn)。當上層業(yè)務(wù)發(fā)生變化時,通過數(shù)據(jù)模型,底層的技術(shù)實現(xiàn)可以非常輕松的完成業(yè)務(wù)的變動,從而達到整個數(shù)據(jù)倉庫的靈活性。幫助數(shù)據(jù)倉庫系統(tǒng)本身的建設(shè)。通過數(shù)據(jù)倉庫的模型建設(shè),開發(fā)人員和業(yè)務(wù)人員能偶很容易的達成系統(tǒng)建設(shè)范圍的界定,以及長期目標的規(guī)劃,從而能夠使整個項目組明確當前的任務(wù),加快這個系統(tǒng)建設(shè)的速度。3.3.如何創(chuàng)建數(shù)據(jù)模型
數(shù)據(jù)倉庫的數(shù)據(jù)建模大致分為四個階段:3.3.1.業(yè)務(wù)建模從定義上來說,業(yè)務(wù)模型是最高層次的數(shù)據(jù)模型,主要完成:
劃分整個單位的業(yè)務(wù),一般按照業(yè)務(wù)部分的劃分,進行各個部分之間業(yè)務(wù)工作的界定,理清各業(yè)務(wù)部門之間的關(guān)系;
深入了解各個業(yè)務(wù)部門的具體業(yè)務(wù)流程并將其程序化;
提出修改和改進業(yè)務(wù)部門工作流程的方法并程序化;
數(shù)據(jù)建模的范圍界定,這個數(shù)據(jù)倉庫項目的目標和階段劃分。
3.3.2.領(lǐng)域概念(主題域)建模
主題域模型數(shù)據(jù)倉庫的主要主題和重要業(yè)務(wù)之間的關(guān)系。一般來說,在進行數(shù)據(jù)倉庫系統(tǒng)設(shè)計和開發(fā)之前,設(shè)計開發(fā)人員和業(yè)務(wù)人員通過前期的業(yè)務(wù)建模,已經(jīng)對主題域的劃分達成共識,因為主題域模型反映的是核心的業(yè)務(wù)問題。主題域模型設(shè)計步驟如下:在業(yè)務(wù)建模的基礎(chǔ)上提取重要的業(yè)務(wù)數(shù)據(jù)主題,包括對業(yè)務(wù)數(shù)據(jù)主題的詳細解釋;
在業(yè)務(wù)數(shù)據(jù)主題的基礎(chǔ)上進行數(shù)據(jù)主題域的劃分,包括對數(shù)據(jù)主題域的詳細解釋;
劃分主題域概念模型:根據(jù)數(shù)據(jù)主題域的劃分,細化內(nèi)部的組織結(jié)構(gòu)和業(yè)務(wù)關(guān)系。
主題域建模的流程大致可以劃分成如下幾個部分:在前一個階段業(yè)務(wù)建模的過程中,已經(jīng)對業(yè)務(wù)系統(tǒng)進行數(shù)據(jù)的梳理。根據(jù)各業(yè)務(wù)的特點列出數(shù)據(jù)主題詳細的清單,并對每個數(shù)據(jù)主題都作出詳細的解釋,然后經(jīng)過歸納、分類,整理成各個數(shù)據(jù)主題域,列出每個數(shù)據(jù)主題域包含哪些部分,并對每個數(shù)據(jù)主題域作出詳細解釋,最后劃分成主題域概念模型。3.3.3.邏輯建模
從定義上講,邏輯模型是以概念模型為基礎(chǔ),對概念模型的進一步細化、分解。邏輯模型通過實體和實體之間的關(guān)系描述業(yè)務(wù)的需求和系統(tǒng)實現(xiàn)的技術(shù)領(lǐng)域,是業(yè)務(wù)需求人員和技術(shù)人員溝通的橋梁和平臺。邏輯模型的設(shè)計是數(shù)據(jù)倉庫實施中最重要的一步,因為他直接反應(yīng)了業(yè)務(wù)部門的實際需求和業(yè)務(wù)規(guī)則,同時對物理模型的設(shè)計和實現(xiàn)具有指導(dǎo)作用。其特點就是通過實體和實體之間的關(guān)系勾勒出整個企業(yè)的數(shù)據(jù)藍圖和規(guī)則。概念模型的主題域一般是從企業(yè)現(xiàn)有的信息系統(tǒng)和行業(yè)自身業(yè)務(wù)活動匯總的來的業(yè)務(wù)模型主題域。而邏輯模型除了在概念模型的基礎(chǔ)上豐富和細化主題域,并且確定每個主題域包含哪些主題外,還需要:分析需求,列出需求分析的主題,需求目標、維度指標、維度層次、分析的指標、分析的方法、數(shù)據(jù)的來源、關(guān)注的對象等。
選擇用戶感興趣的數(shù)據(jù),通過業(yè)務(wù)需求將需要分析的指標分離抽取出來,轉(zhuǎn)化成邏輯模型需要的實體。
在實體中需要增加時間戳屬性,因為實體中需要保存哥哥階段的歷史數(shù)據(jù)。通常情況下,如果實體為同一編碼,則不需要增加時間戳屬性。
需要考慮粒度層次的劃分。數(shù)據(jù)倉庫的粒度層次劃分直接影響了數(shù)據(jù)倉庫模型的設(shè)計,通常細粒度的數(shù)據(jù)模型直接從企業(yè)模型選取實體作為邏輯模型的實體,而粗粒度的數(shù)據(jù)模型需要經(jīng)過匯總計算得到相應(yīng)的實體。粒度決定了企業(yè)數(shù)據(jù)倉庫的實現(xiàn)方式、性能、靈活性和數(shù)據(jù)倉庫的數(shù)據(jù)量。
在粒度層次劃分的基礎(chǔ)上,還需要進行關(guān)系模式的定義,形成各個實體、實體屬性、實體之間的關(guān)系等內(nèi)容。同時在邏輯模型框架的基礎(chǔ)上對實體的中英文名稱、屬性、屬性的值域進行明確、完善和細化,真實反映業(yè)務(wù)邏輯關(guān)系和業(yè)務(wù)規(guī)則。
3.3.4.物理建模
在邏輯模型的基礎(chǔ)上,為應(yīng)用生產(chǎn)環(huán)境選取一個合適的物理結(jié)構(gòu)的過程,包括合適的存儲結(jié)構(gòu)和存儲方法,稱作物理模型的設(shè)計過程。邏輯模型轉(zhuǎn)變?yōu)槲锢砟P桶ㄒ韵聨讉€步驟:實體名(Entity)變?yōu)楸砻╰able)。
屬性名(attribute)轉(zhuǎn)換為列名(column),確定列的屬性(Property)。
物理模型必須對列的屬性進行明確的定義,包括:列名、數(shù)據(jù)類型。
物理模型確定后,還可以進一步確定數(shù)據(jù)存放位置和存儲空間的分配。
3.4.數(shù)據(jù)倉庫建模方法
3.4.1.實體建模法
實體建模并不是數(shù)據(jù)倉庫建模中常見的一個方法,它來源于哲學(xué)的一個流派。從哲學(xué)的意義上說,客觀世界應(yīng)該是可以細分的,客觀世界應(yīng)該可以分成由一個個實體,以及實體與實體之間的關(guān)系組成。那么在數(shù)據(jù)倉庫的建模過程中完全可以引入這個抽象的方法,將整個業(yè)務(wù)也可以劃分成一個個的實體,而每個實體之間的關(guān)系,以及針對這些關(guān)系的說明就是我們數(shù)據(jù)建模需要做的工作。雖然實體建模看起來好像有些抽象,其實理解起來很容易。即我們可以將任何一個業(yè)務(wù)劃分成3個部分,實體,事件和說明。如果描述一個簡單的事實:“小明開車去學(xué)校上學(xué)”。以這個業(yè)務(wù)事實為例,我們可以把“小明”,“學(xué)?!笨闯墒且粋€實體,“上學(xué)”描述成一個業(yè)務(wù)過程,在這里可以抽象為一個具體“事件”,而“開車去”怎可以看成事件“上學(xué)”的一個說明。從上面列舉的例子可以了解,我們使用的抽象歸納方法其實很簡單,任何業(yè)務(wù)可以看成3個部分:- 實體:指領(lǐng)域建模中特定的概念主題,指發(fā)生業(yè)務(wù)關(guān)系的對象;
- 事件:指概念主體之間完成一次業(yè)務(wù)流程的過程,指特定的業(yè)務(wù)過程;
由于實體建模法,能夠很輕松的實現(xiàn)業(yè)務(wù)建模的劃分。因此,在業(yè)務(wù)建模階段和領(lǐng)域建模階段,實體建模方法有著廣泛的應(yīng)用。一般在沒有現(xiàn)成的行業(yè)建模的情況下,可以采用實體建模的方法,和客戶一起清理整個業(yè)務(wù)的模型,進行領(lǐng)域概念的劃分,抽象出具體的業(yè)務(wù)概念,結(jié)合客戶的使用特點,完全可以創(chuàng)建出一個符合自己需要的數(shù)據(jù)倉庫模型來。但是,實體建模也有著自己先天的缺陷,由于實體說明法只是一種抽象客觀事件的方法,因此,注定了該建模方法只能局限在業(yè)務(wù)建模和領(lǐng)域概念建模階段。因此,到了邏輯建模階段和物理建模階段,則是范式建模和維度建模發(fā)揮長處的階段。3.4.2.范式建模法
范式建模法其實是我們在構(gòu)建數(shù)據(jù)模型常用的一個方法,該方法的主要由inmon所提倡,主要解決關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)存儲,利用的一種技術(shù)層面上的方法。目前,在關(guān)系型數(shù)據(jù)庫中的建模方法,大部分采用的是三范式建模法。范式是數(shù)據(jù)庫邏輯模型設(shè)計的基本理論,一個關(guān)系模型可以從第一范式到第三范式進行無損分解,這個過程也可以稱為規(guī)范化。在數(shù)據(jù)倉庫的模型設(shè)計中目前一般采用第三范式,他有著嚴格的數(shù)學(xué)定義。從其表達的含義來看,一個符合第三范式的關(guān)系必須具有以下三個條件:每個屬性值唯一,不具有多義性;每個非主屬性必須完全依賴于整個主鍵,而非主鍵的一部分;每個非主屬性不能依賴于其他關(guān)系中的屬性,因為這樣的話,這種屬性應(yīng)該歸到其他關(guān)系中去。根據(jù)Inmon的觀點,數(shù)據(jù)倉庫模型的建設(shè)方法和業(yè)務(wù)系統(tǒng)的企業(yè)數(shù)據(jù)模型類似。在業(yè)務(wù)系統(tǒng)中,企業(yè)數(shù)據(jù)模型決定了數(shù)據(jù)的來源,而企業(yè)數(shù)據(jù)模型也分為兩個層次,即主題域模型和邏輯模型。同樣,主題域模型可以看成業(yè)務(wù)模型的概念模型,而邏輯模型則是域模型在關(guān)系型數(shù)據(jù)庫上的實例化。從業(yè)務(wù)數(shù)據(jù)模型轉(zhuǎn)向數(shù)據(jù)倉庫模型時,同樣也需要有數(shù)據(jù)倉庫的域模型,即概念模型,同時也存在域模型的邏輯模型。這里,業(yè)務(wù)模型中的數(shù)據(jù)模型和數(shù)據(jù)倉庫的模型稍稍有一些不同,主要區(qū)別在于:數(shù)據(jù)倉庫的域模型應(yīng)該包含企業(yè)數(shù)據(jù)模型的域模型之間的關(guān)系,以及各個域模型定義。數(shù)據(jù)倉庫的域模型的概念應(yīng)該比業(yè)務(wù)系統(tǒng)的主題域模型規(guī)范更加廣。在數(shù)據(jù)倉庫的邏輯模型需要從業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型中的邏輯模型中抽象實體,實體的屬性,實體的子類,以及實體的關(guān)系等。范式建模法的最大優(yōu)點就是從關(guān)系型數(shù)據(jù)庫的角度出發(fā),結(jié)合了業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型,能夠比較方便的實現(xiàn)數(shù)據(jù)倉庫的建模。但其缺點也很明顯,由于建模方法限定在關(guān)系型數(shù)據(jù)庫之上,在某些時候反而限制了整個數(shù)據(jù)倉庫模型的靈活性,性能等,特別是考慮數(shù)據(jù)倉庫的底層數(shù)據(jù)向數(shù)據(jù)集市的數(shù)據(jù)進行匯總時,需要進行一定的變通才能滿足響應(yīng)的需求。3.4.3.維度建模法
維度建模是kimball最先提出的。其最簡單的描述就是:按照事實表,維表來構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)集市。這種方法最被人廣泛知曉的名字就是星型建模。星型模式之所以被廣泛使用,在于針對各個維做了大量的預(yù)處理,如按照維進行預(yù)先的統(tǒng)計、分類、排序等。通過這些預(yù)處理,能夠極大的提升數(shù)據(jù)倉庫的處理能力。特別是針對3NF的建模方法,星型模式在性能上占據(jù)明顯的優(yōu)勢。同時,維度建模法的另外一個優(yōu)勢是:維度建模非常直觀,僅僅圍繞著業(yè)務(wù)模型,可以直觀的反應(yīng)出業(yè)務(wù)問題。不需要經(jīng)過特別的抽象處理,即可以完成維度建模。這一點也是維度建模的優(yōu)勢。但是維度建模的缺點也非常明顯,由于在構(gòu)建星星模型之前需要進行大量的數(shù)據(jù)預(yù)處理,因此會導(dǎo)致大量的數(shù)據(jù)處理工作。而且,當業(yè)務(wù)發(fā)生變化,需要重新進行維度的定義時,往往需要重新進行維度數(shù)據(jù)的預(yù)處理。而在這些預(yù)處理的過程中,往往會導(dǎo)致大量的數(shù)據(jù)冗余。另外一個維度建模的缺點是:如果只是單純的維度建模,不能保證數(shù)據(jù)來源的一致性和準確性,而且在數(shù)據(jù)倉庫的底層,不是特別適用于維度建模的方法。04 維度建模
4.1.維度建模技術(shù)
維度建模是DW/BI系統(tǒng)的核心,他是ETL系統(tǒng)的目標、數(shù)據(jù)庫的結(jié)構(gòu)、支持用戶查詢和制作報表的模型。建模要實現(xiàn)3個主要設(shè)計目標,分別是:能盡可能簡潔的向用戶展示需要的信息;能盡快返回查詢結(jié)果給用戶;能提供相關(guān)信息,以便精確的跟蹤潛在的業(yè)務(wù)過程。維度建模能使任何事情盡可能簡單,但絕不是簡化。在數(shù)據(jù)倉庫和商業(yè)智能中,維度模型是給用戶顯示信息的首選結(jié)構(gòu),其比典型的原系統(tǒng)規(guī)范化模型更便于用戶理解。維度建模中表更少,信息分組為對用戶有意義的、一致的業(yè)務(wù)類別。這些類別稱為維度,有助于用戶瀏覽模型,因為可以忽略與特定分析無關(guān)的全部類別。但是盡可能簡潔并不意味著模型一定簡單。模型必須反映業(yè)務(wù),而業(yè)務(wù)通常都比較復(fù)雜,如果簡化的過多,一般來說只表示了聚合數(shù)據(jù),模型就會丟失對理解業(yè)務(wù)非常重要的信息。無論如何進行數(shù)據(jù)建模,數(shù)據(jù)內(nèi)容在的復(fù)雜性都使大多數(shù)人最終愿意通過結(jié)構(gòu)化報表和分析應(yīng)用程序來訪問DW和BI系統(tǒng)。維度建模能提供更好的查詢性能,因為在創(chuàng)建維度時采用了反規(guī)范化的方法,通過預(yù)先連接各種層次結(jié)構(gòu)和查詢表,優(yōu)化程序考慮的連接路徑較少,創(chuàng)建的中間臨時表更少。為了精確跟蹤潛在的業(yè)務(wù)過程,需要采用各種設(shè)計模式,以創(chuàng)建出精確捕獲和跟蹤業(yè)務(wù)模型。維度模型由一個或者多個中心事實表和與其相關(guān)的維度構(gòu)成。事實表位于中心,而維度環(huán)繞在其周圍,類似于星型結(jié)構(gòu),因此又把維度模型成為星型模型。4.1.1.事實表
事實表是維度模型的基本表,存放有大量的業(yè)務(wù)性能度量值。應(yīng)力圖將從一個業(yè)務(wù)處理過程得到的度量值數(shù)據(jù)存放在單個數(shù)據(jù)中心。由于度量值數(shù)據(jù)壓倒性的成為任何數(shù)據(jù)中心的最大部分,因此應(yīng)該避免在企業(yè)范圍內(nèi)的不同地方存儲其拷貝。用術(shù)語“事實”代表一個業(yè)務(wù)度量值。例如:商品銷售記錄每個商店每種產(chǎn)品的銷售數(shù)量和銷售額。在各維度值(日期、產(chǎn)品和商店)的交叉點就可以得到一個度量值。維度值的列表給出了一個事實表的粒度定義,并確定出度量值的取值范圍是什么。- 粒度(記錄事實的細節(jié)級):事實表中包含信息的詳細程度稱為粒度。強烈建議以原始來源中可能的最小細節(jié)級別構(gòu)建事實表--通常稱為原子級別。原子事實表提供了完整的靈活性,數(shù)據(jù)可以累積到現(xiàn)在或?qū)砣魏尉S度需要的任何聚合級別。每個事實表必須只有一種粒度。例如,如果在同一事實表中包含每月預(yù)測項和單獨的銷售訂單項,就很容易引起混淆并產(chǎn)生危險。
- 相加性:事實的可加性是至關(guān)重要的,因為數(shù)據(jù)倉庫應(yīng)用幾乎從不僅僅只檢索事實表的單行數(shù)據(jù)。相反,往往一次性帶回數(shù)百、數(shù)千乃至數(shù)百萬行的事實,并且處理這么多行的最有用的事就是將它們加起來。但是有些事實是半加性質(zhì)的,而另外一些是不可加性質(zhì)的。半加性事實僅僅沿某些維度相加,而非加性事實根本就不能相加。對于非加性事實,如果希望對其進行總結(jié)就不得不使用計數(shù)或平均數(shù),或者降為一次一行的打印出全部事實行。對這長達數(shù)十億行的事實表來說,將是一個遲緩而乏味的工作。
- 文本度量值:度量事實在理論上可以是文本形式的,文本度量可以是某種事物的描述。但是設(shè)計者應(yīng)該盡量將文本度量轉(zhuǎn)換成維度,原因在于維度能夠與其他文本維度屬性更有效關(guān)聯(lián)起來,并且消耗少的多的空間。不能將冗余的文本信息存放在事實表內(nèi)。除非文本對于事實表的每行來說都是唯一的,負責(zé)他應(yīng)該歸屬到維度表中。真正的文本事實在數(shù)據(jù)倉庫中很少出現(xiàn),因為文本事實具有像自由文本內(nèi)容那樣不可預(yù)見性,這幾乎是不可能進行分析的。
- 鍵選擇:多維數(shù)據(jù)建模中的鍵選擇是一個難題。它包含性能和易于管理之間的權(quán)衡(trade-off)。鍵選擇主要適用于維度。您為維度所選擇的鍵必須是事實的外鍵。維度鍵有兩種選擇:您可以分配一個任意鍵,或者使用操作系統(tǒng)中的標識符。任意鍵通常只是一個序列號,當需要一個新鍵時,就分配下一個可用的號碼。為了使用操作系統(tǒng)中的標識符惟一地表示維度,您有時需要使用一個復(fù)合鍵。復(fù)合鍵就是由多個列組成的鍵。任意鍵是一列,通常比操作派生的鍵要小。因此,任意鍵通??梢愿斓貓?zhí)行連接。鍵選擇中的最后一個因素就是它對事實表的影響。在創(chuàng)建事實時,必須將每個維度的鍵分配給它。如果維度將帶有時間戳的操作派生的鍵用于歷史數(shù)據(jù),那么在創(chuàng)建事實時,就沒有附加工作。連接將自動發(fā)生。對于任意鍵或任意歷史標識符,在創(chuàng)建事實時,就必須將一個鍵分配給事實。分配鍵的方式有兩種。一種就是維護操作和數(shù)據(jù)倉庫的鍵的轉(zhuǎn)換表。另一種就是存儲操作鍵,并且在必要時,存儲時間戳作為維度上的屬性數(shù)據(jù)。那么,選擇就在任意鍵的更好性能和操作鍵的更易維護之間進行。性能提高多少和維護增加多少的問題就必須在您自己的組織中進行評估了。無論做出什么選擇,都必須在元數(shù)據(jù)中用文檔記錄生成它們的過程。該信息對于管理和維護數(shù)據(jù)倉庫的技術(shù)人員來說是必要的。如果您所使用的工具沒有隱藏連接處理,那么用戶可能也需要理解這一點。
- 一致性事實:如果某些度量出現(xiàn)在不同的事實表中,需要注意,如果需要比較或計算不同事實表中的事實,應(yīng)保證針對事實的技術(shù)定義是相同的。如果不同的事實表定義是一致的,則這些一致性事實應(yīng)該具有相同的命名,如果它們不兼容,則應(yīng)該有不同的命名用于告誡業(yè)務(wù)用戶。
事實表的分類:事務(wù)事實表、周期快照事實表、積累快照事實表。- 事務(wù)事實表:一行對應(yīng)空間或時間上某點的度量事件。原子事務(wù)粒度事實表是維度化及可表達的事實表,這類健壯的維度確保對事務(wù)數(shù)據(jù)的最大劃分片和分塊。事務(wù)事實表可以是稠密的,也可以是稀疏的,因為僅當存在度量時才會建立行。這些事實表總是包含一個與維度表關(guān)聯(lián)的外鍵,也可能包含精確的時間戳和退化維度建。度量數(shù)字事實必須與事務(wù)粒度保持一致。
- 周期性快照事實表:事實表中的每行匯總了發(fā)生在某一標準周期,如某天、某月。粒度是周期性的,而不是個體的事務(wù)。周期快照事實表通常包含許多事實,因為任何與事實表粒度一致的度量事件都是被允許存在的。這些事實表其外鍵的密度是均勻的,因為即使周期內(nèi)沒有活動發(fā)生,也會在事實表中為每個事實插入包含0或空值的行。
- 積累快照事實表:事實表匯總了發(fā)生在過程開始和結(jié)束之間可預(yù)測步驟內(nèi)的度量事件。管道或工作流過程具有定義的開始點,標準中間過程,定義的結(jié)束點,他們在此類事實表中都可以被建模。通常在事實表中針對過程中的關(guān)鍵步驟都包含日期外鍵。積累快照事實表中的一行,對應(yīng)某一具體的訂單,當訂單產(chǎn)生時會插入一行。當管道過程發(fā)生時,積累事實表行被訪問并修改。這種對積累快照事實表行的一致性修改在三種類型事實表中具有特性,除了日期外鍵與每個關(guān)鍵過程步驟關(guān)聯(lián)外,積累快照事實表包含其他維度和可選退化維度的外鍵。通常包含數(shù)字化的與粒度保持一致的,符合里程碑完成計數(shù)的滯后性度量。
4.1.2.維度表
維度表包含有業(yè)務(wù)的文字描述。在一個設(shè)計合理的維度模型中,維度表有許多列或者屬性,這些屬性給出對維度表的行所進行的描述。維度表傾向于將列數(shù)做的特別大,每個維度用單一的主關(guān)鍵字進行定義,主關(guān)鍵字是確保同與之相連的任何事實表之間存在應(yīng)用完整性的基礎(chǔ)。維度屬性是查詢約束條件、成組與報表標簽生成的基本來源。例如,一個用戶要按照“星期”和“商標”來查看銷售額,那么“星期”與“商標”就必須是可用的維度屬性。數(shù)據(jù)倉庫的能力直接與維度屬性的質(zhì)量和深度成正比。在提供詳細的業(yè)務(wù)用語屬性方面所化的時間越多,數(shù)據(jù)倉庫就越好。在屬性列值的給定方面所花的時間越多,數(shù)據(jù)倉庫就越好。在保證屬性列值的質(zhì)量方面所花的時間越多,數(shù)據(jù)倉庫就越好。
最好的屬性是文本的和離散的。屬性應(yīng)該是真正的文字而不應(yīng)是一些編碼簡寫符號。例如:對于產(chǎn)品來說,典型的屬性應(yīng)該包括一個短描述、一個長描述、一個商標名、一個分類名、包裝類型、尺寸以及大量其他產(chǎn)品特征等方面的內(nèi)容。維度表時常描述業(yè)務(wù)中的層次關(guān)系。例如:產(chǎn)品劃分為商標、然后是分類。產(chǎn)品維度的每行都存放有與產(chǎn)品有關(guān)的商標和分類。但是存放層次描述信息顯得很冗余,
不過也是基于容易使用和查詢性能方面的考慮才這樣做的。不要受僅僅存儲商標編碼并為其建立一個單獨的商標查詢表的固有想法所限制,這種形式可以稱為雪花。維度表一般是很不規(guī)范的,通常也非常小。既然維度表一般都很小,通過規(guī)范化或者雪花來提高存儲效率的做法也起不了大作用,所以實際應(yīng)用中,幾乎總是用維度表的空間來換取簡明性和可訪問性。還需要了解:退化維度、多層次維度、非規(guī)范化扁平維度、雪花維度。OLAP對維度的劃分有:強制維度、普通維度、衍生維度、層次維度。需要掌握:一致性維度集成、緩慢變化維處理、層次維度處理4.1.3.事實與維度的融合
由數(shù)字型度量值組成的事實表連接到一組填滿描述屬性的維度表上。這個星型特征結(jié)構(gòu)通常被叫做星型連接方案。關(guān)于維度方案,應(yīng)該注意第一件事就是其簡明性與對稱性。簡明性是指用戶可以很容易的理解和瀏覽數(shù)據(jù);簡明性也提升了性能上的好處,倉庫在處理時首先對維度表進行過濾處理,然后用滿足用戶約束條件的維度表關(guān)鍵字的笛卡爾乘積一次性處理全部的事實表。維度表模型能夠很自然的進行擴展以適應(yīng)變化的需求。維度模型的可預(yù)訂框架能夠經(jīng)受住無法預(yù)見的用戶行為變化所帶來的考驗。每個維度都是平等的,所有維度都是進入事實表的對等入口。每個邏輯模型不存在內(nèi)置的關(guān)于某種期望的查詢形式方面的偏向,不存在這個月要問的業(yè)務(wù)問題相對于下個月來說具有優(yōu)化方面的考慮。沒有誰希望,如果業(yè)務(wù)用戶采用新的方式進行業(yè)務(wù)分析,就要調(diào)整設(shè)計方案這樣的事情發(fā)生。維度模型的事實與維度表如下:在設(shè)計過程中,最佳粒度或者原子數(shù)據(jù)具有最佳的維度。被聚合起來的原子數(shù)據(jù)是最有表現(xiàn)力的數(shù)據(jù)。原子數(shù)據(jù)應(yīng)該成為每個事實表設(shè)計的基礎(chǔ)。從而經(jīng)受住業(yè)務(wù)用戶無法預(yù)見的查詢所引起的特別攻擊。對于維度模型來說,完全可以向方案中加入新的維度,只要其值對于每個現(xiàn)有的事實行存在唯一性定義就行。同樣,可以向事實表加入新的不曾預(yù)料到的事實,只要其詳細程度與現(xiàn)有事實表處在一致的水平面上就可以了。可以用新的不曾預(yù)料到的屬性補充先前存在的維度表,也可以從某個前向時間點的角度在一個更低的粒度層面上對現(xiàn)存維度進行分解。在每種情況下,可以簡單的在表中加入新的數(shù)據(jù)行或者對現(xiàn)在表進行適當?shù)男薷摹?/span>認識事實與維度表之間互補性的另外一種方式是在所形成的報表中了解他們。如上圖,維度屬性提供了生成報表標簽的內(nèi)容,而事實表則提供了報表的數(shù)字型取值。最后就像已經(jīng)強調(diào)的那樣,展示環(huán)節(jié)的數(shù)據(jù)應(yīng)該是維度形式的。不過,維度模型與規(guī)范化模型之間存在著一種自然的關(guān)系。理解這種關(guān)系的關(guān)鍵在于認識到,單個規(guī)范化ER圖通常分解為多個維度方案。為機構(gòu)建立的大型規(guī)范化模型可以將電話銷售、訂購單、裝貨發(fā)票、顧客付款、產(chǎn)品利潤等內(nèi)容全部放在一個圖中。在某種程度上講,規(guī)范化ER圖對自身就是一種傷害,原因在于他將許多從來就不會出現(xiàn)在單個數(shù)據(jù)集中的多個業(yè)務(wù)處理放在了單張繪制圖中。可見,規(guī)范化模型看起來很復(fù)雜,是不足為奇的。如果有一張已經(jīng)存在的規(guī)范化ER圖,將它轉(zhuǎn)換為一組維度模型的第一步是,將ER圖分成一些分散的業(yè)務(wù)處理過程,然后分別單獨建模。第二步是選出ER圖中那些含有數(shù)字型與可加性非關(guān)鍵字事實的多對多關(guān)系,并將他們標記為事實表。最后一步是,將剩下的所有表復(fù)合成具有直接連接到事實表的單連關(guān)鍵字的平面表,這些表就成為維度表。4.2.維度建模過程
維度建模具有一定順序,分別是:①業(yè)務(wù)處理②粒度③維度④事實。4.2.1.選取業(yè)務(wù)處理
業(yè)務(wù)處理過程是機構(gòu)中進行的一般都是有源系統(tǒng)提供支持的自然業(yè)務(wù)活動。聽取用戶的意見是選取業(yè)務(wù)處理過程的效率最高的方式。在選取業(yè)務(wù)階段,數(shù)據(jù)模型設(shè)計者需要有全局和發(fā)展的視角,應(yīng)該理解整體業(yè)務(wù)流程的基礎(chǔ)上,從全局角度選取業(yè)務(wù)處理。要記住的重要一點是,這里談到的業(yè)務(wù)處理并不是指業(yè)務(wù)部門或者職能。通過將注意力集中放在業(yè)務(wù)處理過程方面,就能在機構(gòu)范圍內(nèi)更加經(jīng)濟的提交一致的數(shù)據(jù)。如果建立的維度模型是同部門捆綁在一起的,就無法避免出現(xiàn)具有不同標記與術(shù)語的數(shù)據(jù)拷貝的可能性。多重數(shù)據(jù)流向單獨的維度模型,會使用戶在應(yīng)付不一致性的問題方面顯得很脆弱。確保一致性的最佳辦法是對數(shù)據(jù)進行一次性的發(fā)布。單一的發(fā)布過程還能減少ETL的開發(fā)量,以及后續(xù)數(shù)據(jù)管理和磁盤存儲方面的負擔。4.2.2.定義粒度
粒度定義意味著對各事實表行,實際代表的內(nèi)容給出明確的說明。粒度傳遞了同事實表度量值相聯(lián)系的細節(jié)所達到的程度方面的信息。他給出了后面這個問題的答案“如何描述事實表的單個行?粒度定義是不容輕視的至關(guān)重要的步驟。在定義粒度時應(yīng)優(yōu)先考慮為業(yè)務(wù)處理獲取最有原子性的信息而開發(fā)維度模型。原子性數(shù)據(jù)是所收集的最詳細的信息,這樣的數(shù)據(jù)不能再做更進一步的細分。通過在最低層面上裝配數(shù)據(jù),大多原子粒度在具有多個前段的應(yīng)用場合顯示出其價值所在。原子型數(shù)據(jù)是高度維結(jié)構(gòu)化的。事實度量值越細微并具有原子性,就越能夠確切的知道更多的事情,所有那些確切知道的事情都轉(zhuǎn)換為維度。在這點上,原子型數(shù)據(jù)可以說是維度方法的一個極佳匹配。原子型數(shù)據(jù)可為分析方面提供最大程度的靈活性,因為他可以接受任何可能形式的約束,并可以以任何可能的形式出現(xiàn)。維度模型細節(jié)性數(shù)據(jù)是穩(wěn)如泰山的,并隨時準備接受業(yè)務(wù)用戶的特殊攻擊。當然,可以總是給業(yè)務(wù)處理定義較高層面的粒度,這種粒度表示最具有原子性的數(shù)據(jù)的聚集。不過,只要選取較高層面的粒度,就意味著將自己限制到更少或者細節(jié)性可能更小的維度上了。具有較少粒度性的模型容易直接遭到深入到細節(jié)內(nèi)容的不可預(yù)見的用戶請求的攻擊。聚集概要性數(shù)據(jù)作為調(diào)整的一種手段起著非常重要的作用,但他絕不能作為用戶存取最底層面細節(jié)內(nèi)容的替代品。遺憾的是,有些權(quán)威人士在這方面一直含糊不清,他們宣稱維度模型只適合于總結(jié)性數(shù)據(jù),并批判那些認為維度建模方法可以滿足預(yù)測業(yè)務(wù)需求的看法。這樣的誤解會隨著細節(jié)性的原子型數(shù)據(jù)在維度模型中的出現(xiàn)而慢慢的消失。4.2.3.選定維度
維度所引出的問題是:“業(yè)務(wù)人員將如何描述從業(yè)務(wù)處理過程得到的數(shù)據(jù)?”。應(yīng)該用一組在每個度量上下文中取單一值而代表了所有可能情況的豐富描述,將事實表裝扮起來。如果對粒度方面的內(nèi)容很清楚,那么維度的確定一般是非常容易的。通過維度的選定,可以列出那些使每個維度表豐滿起來的離散的文本屬性。常見的例子包括:日期、產(chǎn)品、客戶、賬戶和機構(gòu)等。4.2.4.確定事實
這是設(shè)計過程的第四步也是最后一步,在于仔細確定那些事實要在事實表中出現(xiàn)。事實的確定可以通過回答“要對什么內(nèi)容進行評測”這個問題來進行。業(yè)務(wù)用戶在這些業(yè)務(wù)處理性能度量值的分析方面有濃厚的興趣。設(shè)計中所有供選取的信息必須滿足在第2步中定義的粒度要求。明顯屬于不同粒度的事實必須放在單獨的事實表中。通??梢詮囊韵氯齻€角度來建立事實表:針對某個特定的行為動作,建立一個以行為活動最小單元為粒度的事實表。最小活動單元的定義,依賴于分析業(yè)務(wù)需求。比如用戶的一次網(wǎng)頁點擊行為、一次網(wǎng)站登錄行為,一次電話通話記錄。這種事實表,主要用于從多個維度統(tǒng)計,行為的發(fā)生情況,主要用于業(yè)務(wù)分布情況,績效考核比較等方面的數(shù)據(jù)分析。針對某個實體對象在當前時間上的狀況。我們通過對這個實體對象在不同階段存儲他的快照,比如用戶的余額、用戶擁有的產(chǎn)品數(shù)等。通過這種可以統(tǒng)計實體在不同生命周期中的關(guān)鍵數(shù)量指標。針對業(yè)務(wù)活動中的重要分析和跟蹤對象,統(tǒng)計在整個企業(yè)不同業(yè)務(wù)活動中的發(fā)生情況。比如會員,可以執(zhí)行或參與多個特定的行為活動。這種事實表是以上兩種事實表的一個總計和歸納。它主要用于針對我們業(yè)務(wù)中的活動對象進行跟蹤和考察。4.3.數(shù)倉在維度建模層次劃分
經(jīng)過長時間的探索,在物理建模這個過程中一般會進行層次劃分,分別是:基礎(chǔ)事實、輕度匯總層、集市寬表層。