在Data Vault模型基礎(chǔ)上構(gòu)建數(shù)據(jù)集市
數(shù)據(jù)倉庫抽取數(shù)據(jù)的過程中,特別是第一次導(dǎo)入之后的每一次增量抽取往往會遇到這樣的問題:業(yè)務(wù)數(shù)據(jù)庫中的一些數(shù)據(jù)發(fā)生了更改,到底要不要將這些變化也反映到數(shù)據(jù)倉庫中?
在數(shù)據(jù)倉庫中,哪些數(shù)據(jù)應(yīng)該隨之變化,哪些可以不用變化?考慮到這些變化,在數(shù)據(jù)倉庫中的維度表又應(yīng)該如何設(shè)計以滿足這些需要
但是在數(shù)據(jù)倉庫中,其數(shù)據(jù)主要的特征一是靜態(tài)歷史數(shù)據(jù),二是少改變不刪除,三是定期增長,其作用主要用來數(shù)據(jù)分析。因此分析的過程中對歷史數(shù)據(jù)就提出了要求,
有一些數(shù)據(jù)是需要能夠反映出在周期內(nèi)的變化歷史,有一些數(shù)據(jù)缺不需要,那么這些數(shù)據(jù)應(yīng)該如何來控制。
漸變維度1類 - Type 1 SCD
- 保持業(yè)務(wù)數(shù)據(jù)和數(shù)據(jù)倉庫中的數(shù)據(jù)始終處于一致。
- 不記錄歷史數(shù)據(jù)。一切不需要維護的歷史數(shù)據(jù)都可以選擇這種類型。
漸變維度2類 - Type 2 SCD
- 盡可能的維護來自業(yè)務(wù)系統(tǒng)中的歷史數(shù)據(jù),能夠真正捕獲到這種歷史數(shù)據(jù)的變化
- 添加新的數(shù)據(jù)。使用的比較常見,基本上除了Type 1之外的情形都會優(yōu)先考慮這種類型。
漸變維度3類 - Type 3 SCD
- 添加歷史列。不會追蹤所有的歷史記錄,只會追蹤上一次的歷史信息。需要記錄歷史數(shù)據(jù),但是又不需要記錄那么多。
在不同的工具中對 SCD 的實現(xiàn)是不一樣的,要關(guān)注的重點應(yīng)該是具體的實現(xiàn)方式和解決思路的原型。
構(gòu)建過程
最好先構(gòu)建需要的PIT表和Bridge表,這樣呢能夠方便進行處理.
構(gòu)建漸變維度1類的數(shù)據(jù)集市
它顯示所有屬性的最新值, 我們可以使用hub表(中心表)的鍵作為維度的代理主鍵 (PK)。建議使用現(xiàn)有的hub表中的代理鍵(MD5哈希列), 因為它已經(jīng)是唯一的,
并將節(jié)省為維度生成典型整數(shù)代理項的過程。這將節(jié)省處理時間, 并允許在維度之前或與維度并行加載事實數(shù)據(jù)表。維度中的所有其他列都將來自貢獻hub和Satellite表。
以已經(jīng)構(gòu)建好的 NorthWind DV模型為基礎(chǔ),構(gòu)建 漸變1類維度表:
1
構(gòu)建漸變維度2類的數(shù)據(jù)集市
漸變維度2類只是稍微困難一些。由于類型2跟蹤值隨時間變化, 這意味著每個業(yè)務(wù)主鍵的維度中可能有多行。因此,不能將hub表的業(yè)務(wù)主鍵用作維度表上的主鍵。
如果使用的是DV2.0, 那么建議使用與原始DV模型中相同的MD5哈希方法來創(chuàng)建代理主鍵。因此, 要在這種情況下獲得唯一鍵,需要創(chuàng)建一個基于業(yè)務(wù)主鍵加上SAT_LOAD_DTS的哈希鍵。
以已經(jīng)構(gòu)建好的 NorthWind DV模型為基礎(chǔ),構(gòu)建 漸變2類維度表:
1