緩慢漸變維度的設計,概念其實就是通過新增兩個字段:有效開始時間,有效結束時間。設定對其某些特定列,記錄住其歷史狀態。
比如拿部門表做例子,部門有其所屬的乙個部門組的關係。如下圖:
我們的業務需求要求不記錄部門名稱變化,和部門組名稱的變化。
所以該表中僅設定部門組no為漸變字段,僅當其內容變化時,才會產生新的記錄。如下圖:
更新前:
更新後:
說明:當天津採購部,因業務需要調整到了2002為編號的,採購部2時,產生了新的記錄。
同時修改舊記錄的scdactive=1 scdenddate=當時時間 getitat=當時時間。
這樣設計的優點:
1. 記錄部門間調整的變化,包括變化時間等。可以很方便的為事實表匹配出其所想要的歷史部門狀態值。
這樣設計的缺點:
1.部門調整一般不會太多,但是如果是乙個變更頻繁的字段(比如部門負責人或其他吧,暫時也舉不出好的例子),這種設計就會出現問題,導致資料量激增,超過10w,100w的維度表,查詢效率是比較低的。
遇到的問題:
1.因部門組名稱不漸變,導致部門組名稱與部門no不一致。出現如下情況:
因為departgroupname並沒有新增為漸變列,所以其每次更新內容都是所有10011部門的記錄。把歷史資料1001的名稱也更新為了採購部2。
解決辦法:
方法1.設定不漸變內容,僅更新active=1的記錄,但是缺點是當如下情況出現時,無法更新所有同部門組no的名稱。
當報表查詢歷史趨勢資料時,有可能吧這兩條記錄都查詢出來,如果按照groupno,groupname分組,則將1001分為了兩個group
方法2.在elt job之外,再新增一部分處理,匹配所有的groupno,與groupname的關係,按照groupno匹配其所有記錄的name為最新。(但是這種方法又感覺不是很好,因為是在job之外單獨處理所有資料)
方法3.尋找中...
都看不見了。。。。。我暈
資料倉儲 緩慢漸變維度解決方法
在從 oltp 業務資料庫向 dw 資料倉儲抽取資料的過程中,特別是第一次匯入之後的每一次增量抽取往往會遇到這樣的問題 業務資料庫中的一些資料發生了更改,到底要不要將這些變化也反映到資料倉儲中?在資料倉儲中,哪些資料應該隨之變化,哪些可以不用變化?考慮到這些變化,在資料倉儲中的維度表又應該如何設計以...
資料倉儲 緩慢漸變維 拉鍊表
緩慢漸變維 維度會隨著時間發生緩慢的變化。處理方式 全量快照 拉鍊表全量快照很簡單,今天我們來看看拉鍊表。拉鍊表是處理緩慢漸變維的一種方式,它區別於正常的表而言,會多兩個字段,start date和end date,代表這條資料的起始時間和結束時間。如 james同學哪天想不開了,他從男的變成了女的...
資料倉儲中清空維度表問題
資料倉儲搭建好以後,若維度表資料量不是很大,可採用全部更新的方式來提高效率,因為若用增量更新,則需要漸變維度元件,效率較底.採用全部更新,每次載入維度表之前必須先清空維度表,可在載入維度表的控制流前面加乙個 執行sql任務 用來清空維度表。但由於資料倉儲往往包有主外來鍵約束,清空表時會遇到問題,這時...