摘要:概括地闡述用SQL Server 2005構(gòu)建數(shù)據(jù)倉庫的基本步驟及構(gòu)建數(shù)據(jù)倉庫的重要元素。
關(guān)鍵詞:數(shù)據(jù)倉庫題;維;粒度
一、關(guān)于數(shù)據(jù)倉庫
數(shù)據(jù)倉庫(Data Warehouse DW)是為了便于多維分析和多角度展現(xiàn)而將數(shù)據(jù)按特定的模式進(jìn)行存儲所建立起來的關(guān)系型數(shù)據(jù)庫,它的數(shù)據(jù)基于OLTP源系統(tǒng)。數(shù)據(jù)倉庫中的數(shù)據(jù)是彼此分離的、可利用的、綜合的、包含時間標(biāo)記的、面向主題的、非易失性的、能訪問的。
數(shù)據(jù)倉庫中常用的基于關(guān)系數(shù)據(jù)庫組織形式的數(shù)據(jù)模型有星型和雪花型。兩種數(shù)據(jù)模型實質(zhì)都是:以事實表為中心,周圍有維表環(huán)境。它們的區(qū)別只在于外圍維表之間的相互關(guān)系不同而已。
二、SQL Server開發(fā)工具
SOL Server 2005是一個全面的數(shù)據(jù)庫平臺,使用集成的商業(yè)智能。(BI)工具提供了企業(yè)級的數(shù)據(jù)管理,并為企業(yè)提供全新有效的解決方案。SQL Server 2005提供高效的分析、數(shù)據(jù)轉(zhuǎn)換、報表和數(shù)據(jù)挖掘等商務(wù)智能服務(wù)。數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,使用SQL Server 2005可以構(gòu)建高性能的數(shù)據(jù)倉庫。數(shù)據(jù)倉庫的框架一般是由事實表和維表組成,一個事實數(shù)據(jù)表都要和一個或多個維度表相關(guān)聯(lián),這里我們用SQLServer 2005數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建工具完成。
三、構(gòu)建數(shù)據(jù)倉庫的步驟
1.確定主題
即確定數(shù)據(jù)分析或前端展現(xiàn)的主題。例如:我們希望得到某年某月某一商場的電器銷售情況,這就是一個主題。主題要體現(xiàn)出某一方面的各分析角度(維度)和統(tǒng)計數(shù)值型數(shù)據(jù)(量度)之間的關(guān)系,確定主題時要綜合考慮。
我們可以將—個主題想象成一顆星星:統(tǒng)計數(shù)值型數(shù)據(jù)(量度)存在于星星中間的事實表;分析角度(維度)是星星的各個角;我們將通過維度的組合來考查量度。那么,“某年某月某一商場的電器銷售情況”這樣一個主題,就要求我們通過時間和商場兩個維度的組合來考察銷售情況這個量度。因而,不同的主題來源于數(shù)據(jù)倉庫中的不同子集,我們可以稱之為數(shù)據(jù)集市。數(shù)據(jù)集市體現(xiàn)了數(shù)據(jù)倉庫某一方面的信息,多個數(shù)據(jù)集市構(gòu)成了數(shù)據(jù)倉庫。
2.確定維度
維度是指分析的各個角度。例如我們希望按照時間,或者按照地區(qū),或者按照產(chǎn)品進(jìn)行分析,那么這里的時間、地區(qū)、產(chǎn)品就是相直的維度。基于不同的維度,我們可以看到各量度的匯總情況,也可以基于所有的維度進(jìn)行交叉分析。
這里我們首先要確定維度的層次(Hierarchy)和級別(Level)。我們在時間維度上,按照“年季度月”形成了一個層次,其中“年”“季度”“月”成為了這個層次的三個級別;同理,當(dāng)我們建立產(chǎn)品維度時,我們可以將“產(chǎn)品大類一產(chǎn)品子類一產(chǎn)品”劃為一個層次,其中包含“產(chǎn)品大類”“產(chǎn)品子類”“產(chǎn)品”三個級別。
3.確定事實數(shù)據(jù)粒度
在確定了量度之后,我們要考慮到該量度的匯總情況和不同維度下量度的聚合情況。考慮到量度的聚合程度不同,我們將采用“最小粒度原則”,即將量度的粒度設(shè)置到最小。
例如:假設(shè)目前的數(shù)據(jù)最小記錄到秒,即數(shù)據(jù)庫中記錄了每一秒的交易額。那么,如果我們可以確認(rèn)在將來的分析需求中,時間只需要精確到天就可以的話,我們就可以在ETL處理過程中,按天來匯總數(shù)據(jù),此時,數(shù)據(jù)倉庫中量度的粒度就是“天”;反過來,如果我們不能確認(rèn)將來的分析需求在時間上是否需要精確到秒,那么,我們就需要遵循“最小粒度原則”,在數(shù)據(jù)倉庫的事實表中保留每一秒的數(shù)據(jù),以便日后對“秒”進(jìn)行分析。
在采用“最小粒度原則”的同時,我們不必?fù)?dān)心海量數(shù)據(jù)所帶來的匯總分析效率問題,因為在后續(xù)建立多維分析模型(CUBE)的時候,我們會對數(shù)據(jù)提前進(jìn)行匯總,從而保障產(chǎn)生分析結(jié)果的效率。
4.創(chuàng)建事實表
在公司的大量數(shù)據(jù)堆積如山時,我們想看看里面究竟是什么,結(jié)果發(fā)現(xiàn)里面是一筆筆生產(chǎn)記錄,一筆筆交易記錄……那么這些記錄是我們將要建立的事實表的原始數(shù)據(jù),即關(guān)于某一主題的事實記錄表。
我們的做法是將原始表與維度表進(jìn)行關(guān)聯(lián),生成事實表。注意在關(guān)聯(lián)時有為空的數(shù)據(jù)時(數(shù)據(jù)源臟),需要使用外連接,連接后我們將各維度的代理鍵取出放于事實表中,事實表除了各維度代理建外,還有各量度數(shù)據(jù),這將來自原始表,事實表中將存在維度代哩鍵和各量度,而不應(yīng)該存在描述性信息,即符合“瘦高原則”,即、要求事實表數(shù)據(jù)條數(shù)盡量多(粒度最小),而描述性信息盡量少。
如果考慮到擴(kuò)展,可以將事實表加一唯一標(biāo)識列,以為了以后擴(kuò)展將該事實作為雪花型維度,不過不需要時—般建議不用這樣做。
事實數(shù)據(jù)表是數(shù)據(jù)倉庫的核心,需要精心維護(hù),在JOIN后將得到事實數(shù)據(jù)表,一般記錄條數(shù)都比較大,我們需要為其設(shè)置復(fù)合主鍵和索引,以實現(xiàn)數(shù)據(jù)的完整性和基于數(shù)據(jù)倉庫的查詢性能優(yōu)化。事實數(shù)據(jù)表與維度表一起放于數(shù)據(jù)倉庫中,如果前端需要連接數(shù)據(jù)倉庫進(jìn)行查詢,我們還需要建立一些相關(guān)的中間匯總表或物化視圖,以方便查詢。
5.ETL
構(gòu)建數(shù)據(jù)倉庫,ETL是關(guān)鍵的一環(huán),ETL就是數(shù)據(jù)的抽取、清洗和轉(zhuǎn)換。ETL是數(shù)據(jù)整合解決方案,具體說就是倒數(shù)據(jù)的工具。SQL Server 2005中數(shù)據(jù)的轉(zhuǎn)換工具有T-SQL、DTS和分布式查詢等,ETL有三種實現(xiàn)方法:借助ETL工具、SQL方式和ETL工具與SQL相結(jié)合。數(shù)據(jù)抽取是從關(guān)系數(shù)據(jù)庫中抽取數(shù)據(jù)的過程,一般采用全量抽取和增量抽取兩種方式。數(shù)據(jù)清洗主要是不完整數(shù)據(jù)的補充、錯誤數(shù)據(jù)的修正和重復(fù)數(shù)據(jù)的過濾。數(shù)據(jù)轉(zhuǎn)換就是將不一致的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)力度的聚合和商務(wù)規(guī)則的統(tǒng)一。
構(gòu)建級數(shù)據(jù)倉庫需要簡單的五步,掌握了這五步的方法,我們可以構(gòu)建一個強大的數(shù)據(jù)倉庫。然而,每一步都有很深的內(nèi)容需要研究與挖掘,尤其在實際項目中,還有很多問題需要我們綜合考慮,比如數(shù)據(jù)集成度、索引策略、載入與分離和數(shù)據(jù)倉庫環(huán)境的優(yōu)化等。