緩慢變化維(Slowly changing Dimensions)指的是維表中的維度字段值會隨着時間或業務調整,而在後續的分析中,歷史數據仍然要使用舊的維度值,新的數據會使用當前維度值。在數據倉庫建設過程當中,ODI提供有專門的SCD 集成模塊,更方便的對維表進行更新。測試
源和目標模型定義代理
本示例基於src_customer表,下面是目標維表的定義:接口
在上面的目標維表中,先說明一下相關的字段:ip
l Key,代理鍵:在生成的結果維表中惟一標識,通常使用Sequence標識;io
l Current_ind,是否有效:當前維表中該記錄是否處於有效狀態;效率
l H_BID,天然主鍵:原有維表中的主鍵字段;im
l C_mstat,維度變動字段:維表中的關鍵維值,即與其它事實表關聯的字段,該值與維度分析有直接關係;數據
l 其它附屬字段(h-addr, h_zip, c_bid, c_tele):其它附屬信息,用於說明該記錄的其它屬性字段;img
l C_eff,開始時間:關鍵維度值有效時間di
l C_exp,結束時間:關鍵維度值失次時間
在每一個字段的屬性窗口中,能夠設置該字段對應的類型:
上圖是針對key字段的設置。
維度值狀態指示器字段的設置:
針對其它屬性字段,選擇有源端有更新時就覆蓋目標值。
原有主鍵字段:
維度值起始時間:
維度關鍵值:
源端維表定義:
該表的字段數比目標表的字段數少。
維表加載更新接口定義
若是字段不能自動匹配,須要手工映射。針對源端沒有的字段,須要人工指定相應的值,以下圖所示:
在流控制中,須要選擇正確的IKM:
測試
原始數據:
第一次執行接口以後目標維表的數據:
在源端把cust_marstat從married改成Single以後,再次執行接口,目標維表的數據以下:
能夠看到,狀態指示字段已經有變化,起止時間也不一樣,最後,關鍵維字段的值已經保留了歷史狀態。
至此,維表的更新完成。
12c比11g的優勢
在12c中,針對SCD的設置作了以下改進:
可直接在目標維表的字段上指定各字段的類型,而不用去每一個字段的屬性頁上單獨編輯,提高設置效率,也更直觀的對維表進行管理。