使用BO DI處理 SCD2維表

摘要:本文首先介紹了緩慢變化維的定義、三種處理方式。以後以員工維表數據爲例,詳細說明如何使用BO DI實現SCD2維表的ETL。最後講解了SCD2維表如何使用。spa

 

1 緩慢變化維簡介

某些維度的屬性會隨着時間緩慢變化,這種維度被稱爲緩慢變化維(Slowly Changing Dimension,SCD)。舉個例子,跨國企業的員工可能會在不一樣區域間調動工做,但兩次調動之間的時間間隔不會過短,所以員工的所屬區域屬性在緩慢變化,員工維是一個緩慢變化維。代理

 

在數據倉庫中緩慢變化維如何建模,如何ETL呢?下面就以員工維表爲例介紹三種經常使用的SCD處理方式。ci

1.1 SCD1:更新舊數據

SCD1 方式直接修改維度記錄的屬性值,維度屬性表示員工當前狀態。開發

 

假設企業內每一個員工都隸屬於某個地區,張三原屬於亞洲地區。員工維表最初存儲的數據以下表:it

 

EMP_ID / 代理鍵io

EMP_CODE / 員工代碼table

EMP_NAME / 員工姓名基礎

REGION / 所屬地區引用

1方法

A001

張三

Asia

 

    其中EMP_ID 是員工維表的主鍵,用於和事實表關聯;EMP_CODE是員工代碼,惟一地標識每位員工;REGION即員工所屬地區。

 

如今因業務須要,張三被派駐到非洲地區了。在SCD1方式中,將張三的地區屬性直接更新爲"Africa",其他字段不變,事實表所引用的EMP_ID也無需變化。下表爲員工維表修改後的狀況,只有張三的所屬地區屬性被更新,維度記錄表示張三當前的狀態。

 

EMP_ID / 代理鍵

EMP_CODE / 員工代碼

EMP_NAME / 員工姓名

REGION / 所屬地區

1

A001

張三

Africa

 

SCD1是處理緩慢變化維最簡單的方法,只有維表的屬性字段須要修改,事實表數據不受影響。SCD1的缺點在於丟失了維度屬性的歷史數據;此外與變化屬性有關的彙總數據必須從新計算,不然彙總與明細數據將沒法對應。

 

維度屬性的緩慢變化是否須要在數據倉庫中體現是根據分析需求而定的。這類需求在調研階段很容易被業務用戶忽略,所以建模人員應檢查每一個維度屬性是否有變化的可能,以及是否有分析歷史信息的須要。不要想固然地把SCD1做爲默認的維度處理方法。

1.2 SCD2:增長新記錄

    SCD2方式使用新記錄存儲更新的維度信息,可以保存維度歷史信息,所以是最主要的緩慢變化維處理方式。

 

咱們繼續使用在區域間調動工做的例子。張三於2007年5月從亞洲調動到非洲後,使用SCD2方式存儲的維表以下所示:

 

EMP_ID / 代理鍵

EMP_CODE / 員工代碼

EMP_NAME / 員工姓名

REGION / 所屬地區

1

A001

張三

Asia

2

A001

張三

Africa

 

張三原有記錄不變,增長一條新記錄做爲張三最新的信息。新記錄的所屬地區字段值爲"Africa",新記錄的EMP_ID字段值是自動生成的代理鍵。事實表中張三2007年5月以前的事實數據使用舊EMP_ID(1),2007年5月以後的事實數據使用新記錄的EMP_ID(2)。

 

SCD2方式實際上存儲了同一員工在不一樣時間的多個版本的信息,自動生成的EMP_ID能夠惟一地標識不一樣版本,而邏輯上惟一的EMP_CODE顯示了同一員工不一樣版本信息間的聯繫。

 

須要注意的是,SCD2維表與事實表關聯時無需附加任何日期時間條件,由於在抽取事實數據時就已經選擇了與事實數據時間相匹配的維度EMP_ID。在SCD2維表中能夠加入"信息生效時間戳"和"信息失效時間戳"兩個字段,經過這兩個字段就能夠還原出任意時間點員工信息的快照。在SCD2維表中還能夠加入"當前有效信息標誌",便於查詢出最新版本的維度信息。

1.3 SCD3:增長新數據列

SCD3方式使用新數據列存儲更新的維度信息,可以保存有限的維度歷史信息。

 

    仍舊用張三調動所屬區域的例子,使用SCD3方式存儲的維表以下所示:

 

EMP_ID / 代理鍵

EMP_CODE / 員工代碼

EMP_NAME / 員工姓名

REGION / 所屬地區

REGION_PRIOR / 以前的所屬地區

1

A001

張三

Africa

Asia

 

    員工維表增長了一列REGION_PRIOR,此列存儲張三的舊所屬地區屬性"Asia",而REGION字段則存儲新所屬地區屬性"Africa"。

 

    有些分析要求同時按維度的新舊屬性查看事實數據。比較常見的例子是銷售區域劃分發生變化後,分析人員但願既能按劃分後的區域查看事實數據,也能按劃分前的區域查看。只有SCD3能知足此類需求。 

1.4 小結

以上是對三種SCD方式的介紹。這三種方式的出場順序沒有任何含義,不表明誰好誰差。三種方式各有優劣,開發者應該根據數據的特色、分析的要求來選擇。

 

以上述三種SCD方式爲基礎,還能夠造成多種混合SCD方法,使維度數據知足更特殊的分析要求。本文不詳細介紹了,深刻了解能夠參考《Data warehouse toolkit》,p102-105,Hybrid Slowly Changing Dimension Techniques。

相關文章
相關標籤/搜索