本章接第2章 Kimball維度模型技術(shù)概述(二)
多種貨幣事實
以多種貨幣單位記錄財務(wù)事務(wù)的事實表行應(yīng)該包含一對列。其中一列包含以真實幣種表示的事實,另外一列包含同樣的,但以整個事實表統(tǒng)一的單一標(biāo)準(zhǔn)幣表示事實。標(biāo)準(zhǔn)幣種在ETL過程中按照規(guī)則的貨幣轉(zhuǎn)換規(guī)則建立。該事實表必須有一個貨幣維度用于區(qū)分事務(wù)的真正貨幣。
多種度量事實單位
某些業(yè)務(wù)過程需要同時以多種單位表示。(如:供應(yīng)商可能需要對相同事實以平臺、船運、零售以及單個掃描單元構(gòu)建報表。)這種事實表可按照不同用戶的觀點部署,使用適當(dāng)選擇的轉(zhuǎn)換系數(shù)。轉(zhuǎn)換系數(shù)必須存儲在事實表行中以確保計算簡單正確,并盡量降低查詢復(fù)雜性。
年-日事實
商業(yè)用戶在事實表中通常需要年-日(year-to-date,YTD)值。一種更可靠、可擴展的處理這些請求的方法是在BI應(yīng)用或OLAP多維數(shù)據(jù)庫中計算YTD矩陣,而不是在事實表中查出YTD事實。
多遍SQL以避免事實表間的連接
BI應(yīng)用絕不應(yīng)該跨事實表的外鍵處理兩個事實表的連接操作。在關(guān)系數(shù)據(jù)庫中,控制此類連接操作的回答集的基數(shù)是不可能的,將會產(chǎn)生不正確的結(jié)果。
針對事實表的時間跟蹤
存在三種基本事實表粒度:事務(wù)級別、周期快照和累積快照。個別情況下,在事實表中增加行有效時期、行截止日期和當(dāng)前行標(biāo)識是非常有用的,與采用類型2緩慢變化維度,在事實行有效獲取時間的方式類似。
遲到的事實
遲到事實是指如果用于新事實行的多數(shù)當(dāng)前維度內(nèi)容無法匹配輸入行的情況。當(dāng)遲到度量事件出現(xiàn)時,必須搜索相關(guān)維度以發(fā)現(xiàn)有效的維度鍵。
高級維度技術(shù)
維度表連接
維度表可以包含到其他維度表的引用。此類關(guān)系可以采用支架維度建模實現(xiàn),如果通過將支架表中的外鍵放入事實表中而不是放置在基本維度表中,降低維度表之間的關(guān)聯(lián),則此類增長通??杀槐苊?。
多值維度與橋接表
經(jīng)典維度模式中,每個與事實表關(guān)聯(lián)的維度都有一個與事實表粒度一致的單一值。(如:某個病人接受了一次健康體檢可能同時出現(xiàn)多個診斷。在此情況下,多值維度必須通過一組維度鍵通過橋接表使一組中的每個診斷與事實表一行關(guān)聯(lián)。)
隨時間變化的多值橋接表
多值橋接表可能需要基于緩慢變化類型2維度。(如:實現(xiàn)銀行賬戶與單獨客戶的多對多關(guān)系的橋接表,通常必須基于類型2的賬號與客戶維度。為防止賬戶與客戶之間的不正確連接,橋接表必須包含有效期和截止日期/時間戳,請求的應(yīng)用必須約束橋接表,使其滿足特定時刻以產(chǎn)生一致的快照。)
標(biāo)簽的時間序列行為
數(shù)據(jù)倉庫中幾乎所有文本都是維度表中的描述性文本。數(shù)據(jù)挖掘客戶聚類分析通常產(chǎn)生文本化的行為標(biāo)簽,通??梢杂米鲄^(qū)分周期。
行為研究分組
有時可以通過執(zhí)行多次迭代分析,來發(fā)現(xiàn)復(fù)雜的客戶行為。在此情況下,將行為分析嵌入到BI應(yīng)用,以約束所有客戶維度成員,獲取復(fù)雜的行為,這樣的做法是不實現(xiàn)的。復(fù)雜行為分析的結(jié)果,可以通過某些簡單表獲取,這些表稱為研究分組,僅包含客戶的持久鍵。
聚集事實作為維度屬性
商業(yè)用戶通常對基于聚集性能度量的客戶維度感興趣,(如,過濾去年或整個階段所有花費超過一定數(shù)額的客戶。)選擇聚集事實可以放入作為約束和作為行標(biāo)識報表的目標(biāo)維度。度量通常表示為維度表中的帶狀范圍。維度屬性表示聚集性能度量將增加ELT處理負(fù)擔(dān),但是可以方便BI應(yīng)用層的分析功能。、
動態(tài)值范圍
動態(tài)值范圍報表由一系列報表行頭組成,這些報表行頭為目標(biāo)數(shù)字化事實定義了范圍不斷變化的集合。(如:從0到¥10的平賬,從¥10.01到¥20的平賬等等)
文本注釋維度
與其將自由注釋作為事實表的文本度量,不如將它們存儲于事實表之外的不同的注釋維度,使該注釋維度對應(yīng)事實表中的一個外鍵。
多時區(qū)
為在多時區(qū)應(yīng)用中獲得通用標(biāo)準(zhǔn)時間以及本地時間,應(yīng)該在受影響的事實表中設(shè)置雙外鍵,用以連接兩個不同角色的日期(和可能的當(dāng)天時間(time-of-day))維度表。
度量類型維度
當(dāng)事實表每行包含一長列稀疏存儲的事實時,可以建立度量類型維度,通過度量類型維度將事實表行變成單一通用事實。
步驟維度
序列過程通常在事務(wù)事實表中用不同行表示過程中的每一步。
熱交換維度
當(dāng)同一個事實表與相同維度的不同拷貝交替搭配時,可使用熱交換維度。
抽象通用維度
一些建模者喜歡使用抽象通用維度。(如:他們的模式包含單一通用位置維度而不是關(guān)于商店、倉庫和客戶維度的嵌入式的地理屬性。)在維度建模時應(yīng)盡量避免使用抽象通用維度。數(shù)據(jù)抽象可以適當(dāng)運用于操作型源系統(tǒng)或ETL處理,但對查詢性能有負(fù)面影響,并會對維度模型的易讀性帶來負(fù)面影響。
審計維度
當(dāng)事實表是在ETL之后建立時,建立包含當(dāng)時已知的ETL過程元數(shù)據(jù)的審計維度是很好的方法。簡單的審計維度行可包含一個或多個數(shù)據(jù)質(zhì)量的基本標(biāo)識,也許來自對錯誤事件模式的檢驗,記錄數(shù)據(jù)處理是發(fā)現(xiàn)數(shù)據(jù)質(zhì)量問題。
最后產(chǎn)生的維度
有時來自操作型業(yè)務(wù)過程的事實在關(guān)聯(lián)維度內(nèi)容前,以分鐘、小時、天或周產(chǎn)生。(如:在實時日期發(fā)布環(huán)境下,訂單消耗行可能會到來,顯示客戶提交的購買特定商品的自然鍵。)在實時ETL系統(tǒng)中,該行必須提交到BI層,即使客戶或產(chǎn)品還不能立即確定下來。此情況下,將建立特殊的維度行,包含作為屬性的未分解的自然鍵。
特殊目的模式
異構(gòu)產(chǎn)品的超類與子類模式
金融服務(wù)與其他商業(yè)通常提供不同業(yè)務(wù)類型的廣泛的產(chǎn)品。(如:零售銀行可以提供許多不同類型的賬目,從支票賬號到抵押貸款到商業(yè)貸款,所有這些都是賬戶實例。)不能建立單一的、固定的事實表,將所有可能的事實都包含在內(nèi),因為存在大量的不兼容事實和屬性。解決方案是建立單一的超類事實表,該事實表遍歷所有賬戶類型的事實表(以及包含公共屬性的超類維度表),然后系統(tǒng)化地為不同子類建立不同的事實表(與維度表關(guān)聯(lián))。超類與子類事實表也被稱為核心或自定義事實表。
實時事實表
實時事實表需要比傳統(tǒng)的夜間批處理過程更頻繁地被更新。有許多技術(shù)可用于支持這一需求。采用何種技術(shù)要考慮最后部署到BI報表層的DBMS或OLAP多維數(shù)據(jù)庫的能力。(如:“熱分區(qū)”可定義一個事實表占用專用物理內(nèi)存。不用再在該分區(qū)上建立聚集和索引。其他DBMS或OLAP多維數(shù)據(jù)庫可能支持延遲更新,允許已存在的運行完畢的查詢,仍然可執(zhí)行更新。)
錯誤事件模式
數(shù)據(jù)倉庫中數(shù)據(jù)質(zhì)量的管理需要一個綜合性系統(tǒng),管理數(shù)據(jù)質(zhì)量通過屏幕或過濾器來實現(xiàn),用于測試從源系統(tǒng)到BI平臺的數(shù)據(jù)。當(dāng)數(shù)據(jù)質(zhì)量屏幕檢測到錯誤時,該事件將被記錄在特殊的維度模式中。該維度模式僅能被ETL后端處理系統(tǒng)處理。這一模式包含錯誤事件事實表,其粒度為單獨錯誤事件和相關(guān)錯誤事件詳細(xì)事實表,相關(guān)錯誤事件詳細(xì)事實表粒度為參與錯誤事件的每個表中的列。