[數據倉庫--ETL]漸變維度(Slowly Changing Dimension)及其處理方法


漸變維度(Slowly Changing Dimension)及其處理方法

要討論什么是漸變維度,或者緩慢變化維度,就要先說說什么是維度。雖然經常掛在嘴邊的詞,但解釋起來確實有難度,更不要說給出一個概念了。我們平時提到的0維的點,一維的線,二維平面,三維的立體空間已經挺復雜了,撇開不提,我們看看BI領域的維度是什么意思。個人的理解,維度就是觀察數據的不同角度。比如有一個魔方,我們從一個面看是綠色,轉個角度,看起來就是紅色了。現在舉一個具體業務的例子,有一個超市的銷售數據,我們就可以有不同的角度去看,從時間角度看,一個月來每天的銷售額是上升的,還是下降的;從產品角度看,那種產品占銷售分額最多,是食品還是日用品。這個例子中的時間和產品就分別是觀察銷售數據的維度,與此類似,也可以有營業員維度,價格維度,折扣維度等等。存儲維度信息的表就叫做維度表。維度分為三類,固定維度,漸變維度,和快變維度,今天我們僅介紹漸變維度,顧名思義,漸變維度就是在業務進行過程中,會發生變化,但又不會頻繁變化的維度。比如我們企業中的部門,可能不時地會有機構調整,部門就會發生變化,但是又不會天天進行機構調整,因此我們可以把部門這個維度看作緩慢變化維。把存放部門這個維度的表,叫做緩慢變化維度表。那么在數據倉庫的ETL過程中應該怎么處理這種漸變的維度表呢?就以前面提到的維度表為例,我們創建表如下:   Dept (Dept_id, Dept_name)有數據如下:              1         財務部              2         市場部              3         人事部那么我們部門調整的時候,把3改為人力資源部了,那么第一種處理方法就是,直接修改Dept表,修改后的表中數據如下:              1         財務部              2         市場部              3         人力資源部這樣處理的好處是,處理簡單快捷,減少空間消耗和管理難度。但是其缺點是不能記錄維度歷史,需要分期部門變化前的數據情況的時候便無從下手了,因此有了第二種處理辦法,增加一個列,把部門變化的歷史記錄下來,修改以后的數據如下:             Dept_id  Dept_name  Dept_name_new              1           財務部          財務部              2           市場部          市場部              3           人事部          人力資源部這種方法的好處是,可以記錄下來維度變化的歷史,方便分析歷史數據,但其缺點是需要修改表結構,增加新列,那么每當部門變化的時候都需要變更表,維護的工作量很大。那么我們現在看一下第三種方法。我們可以在表中增加列,部門的狀態,狀態時間如下     Dept_id  Dept_name  Status   Status_time            Dept_pre_id                1         財務部           A          2009-1-1                              2         市場部           A          2009-1-1                3         人事部           U          2009-2-26                4         人力資源部      A          2009-2-26                3這樣就能記錄到維度改變的歷史,並且不用經常的修改表結構,只需要在維度變化的時候,更改表中數據就可以了。 這種方法的缺點是當維表數據量大的時候,會導致訪問效率降低和存儲空間的消耗增加。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com