緩慢變化維 II

2021-08-11 20:32:54 字數 1387 閱讀 5777

首先說一下概念,緩慢變化維(slowly changing dimensions)指的是:維度表裡面的資料並非是始終不變的,總會隨著時間發生變化:

假設我們有一張我們公司的銷售員維度表如下,記錄了每個銷售員的一些基本資訊,那麼隨著時間的變化銷售員可能會在各省公司間調崗,如將周杰倫調入北京分公司,針對這種變化,業務系統會直接將業務資料庫中周杰倫的位址直接update為北京,而不會考慮歷史變化,不過在資料倉儲中由於有時我們需要進行歷史變化分析,或者防止銷售資料記錄錯誤,所以需要對這種變化進行相應的處理,主要有以下三種辦法:

與業務資料保持一直,同樣為直接update。這樣就難以記錄歷史變化,如果周杰倫於15年7月調入北京,那麼我們想要知道北京銷售員在15年的銷售資料時,就會將周杰倫的業績算入北京分公司下,實際上周杰倫7月份以前的銷售資料均應算在台北,所以為了避免這樣的問題就有了type2的處理方式。

2、type2

保留歷史變化,如下圖:

不過帶來乙個問題,當事實表中的銷售資料與此維度表進行關聯時,由於存在customer_id的資料有兩條100的,所以會關聯出兩個資料,這樣是有問題的,那麼就引入了乙個**鍵的概念,相當於資料倉儲為維度表分配乙個主鍵,而不用當初業務資料庫中的主鍵,如下:

不過此時又帶來了另外乙個問題,當業務事實表中有新的銷售業績資料插入的時候,需要在外鍵列中插入維度表的dw_customer_id,那麼此刻需要先找到維度表中的customer_id,然後再找到最大的dw_customer_id插入進去(因為主鍵往往是自增的,最大的肯定是最新的),但是某些情況下如果向事實表中插入歷史資料的情況,就無法判斷具體是哪個台北周杰倫還是北京周杰倫的業績了,所以往往在維度表中同樣加入時間列,如2000/1/1-2015/7/1來記錄周杰倫在台北,而周杰倫在北京時間字段起始為2015/7/2,末尾時間字段可以記錄空值或用9999/9/9替代,有新變化再進行更新。

3、type3

有時需求中並非所有欄位的變化都進行記錄並且不需要每次變化都記錄,比如我們可能只關心address(所在地)的最近兩次變化,那麼可以這樣記錄:

這樣做只可以記錄少量的變化次數,需要的話也可以相應加上時間列,這種方式一般用到的比較少,多數均為type1,type2,根據是否有必要記錄歷史變化進行選擇。

**:

緩慢變化維

一.什麼是緩慢變化維?緩慢變化維 slowly changing dimensions,scd 它的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度,一般被稱為緩慢變化維 並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡...

緩慢變化維

緩慢變化維 在維度建模的資料倉儲中,通常會有乙個概念叫slowly changing dimensions,譯為 緩慢變化維 經常會被簡寫為scd。緩慢變化維的提出是因為在實際中某些情況下,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維。處...

緩慢變化維

緩慢變化維 維度建模的資料倉儲中,有乙個概念叫slowly changing dimensions,中文一般翻譯成 緩慢變化維 經常被簡寫為scd。緩慢變化維的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維,並且把處...