資料倉儲中,緩慢漸變維度的設計及碰到的問題

2021-06-14 00:44:45 字數 1018 閱讀 8757

緩慢漸變維度的設計,概念其實就是通過新增兩個字段:有效開始時間,有效結束時間。設定對其某些特定列,記錄住其歷史狀態。

比如拿部門表做例子,部門有其所屬的乙個部門組的關係。如下圖:

我們的業務需求要求不記錄部門名稱變化,和部門組名稱的變化。

所以該表中僅設定部門組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任務 用來清空維度表。但由於資料倉儲往往包有主外來鍵約束,清空表時會遇到問題,這時...