3-dw_緩慢變化維

上次我們理解了維度表,哪什麼是緩慢變化維呢,比如我們有這樣的一個場景,A客戶在4月份的時候歸屬於X部門,在5月的時候歸屬於Y部門,如果A客戶的銷售額需要體現歸屬部門的變化關係。此時就需要用到緩慢變化維了。如下圖就是對客戶表的一個緩慢變化。

上面設計就是對每個月把客戶生成一份數據,但如果我們的客戶有100萬個呢,每月生成一份,一年後就有1200萬了,這樣導致數據量會很大,在關聯的時候會嚴重影響性能。哪麼我們就需要用緩慢變化維的設計方案了,採用代理鍵方案來達到最少數據量。如下圖:

我們通過對客戶表的開始日期和結束日期框定每個客戶的當前版本,然後落地數據時把客戶的代理鍵帶上,這樣以後在做數據分析時,如果結果錶帶的客戶維度信息不全,就可以直接用代理鍵關聯客戶維錶帶出需要的維度,如果此時沒有代理鍵做關聯,採用客戶代碼做關聯,就會出現數據笛卡爾積,如下圖,當我們需要對結果表增加客戶的“歸屬部門名稱”時,有“代理鍵”信息時,則直接按代理鍵做關聯條件帶出客戶維表裏的“歸屬部門名稱”信息,如果按“客戶代碼”關聯,則會導致數據翻倍,見紅色數據記錄,4月的由100變化到200了,5月份的200變化到400了,不然就需要重新計算每個月的數據才能達到增加“歸屬部門名稱”信息的目的。

生成緩慢變化維的SQL代碼見:

https://github.com/blt328/dw_blt

更多技術文章請關注公衆號(長按後點識別圖中二維碼):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章