ODI 11g & 12c中緩慢變化維(SCD)的處理機制

 緩慢變化維(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的設置作了以下改進:

 

 

 

 

 

 

可直接在目標維表的字段上指定各字段的類型,而不用去每一個字段的屬性頁上單獨編輯,提高設置效率,也更直觀的對維表進行管理。

相關文章
相關標籤/搜索