一.什麼是緩慢變化維?
緩慢變化維(slowly changing dimensions,scd): 它的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。
這種隨時間發生變化的維度,一般被稱為緩慢變化維;並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡稱為處理scd的問題。
二.怎樣處理緩慢變化維?
處理方法通常分為3種:
假設有這樣一條資料:
idname
city
101luna
chongqing
現在luna離開重慶,前往成都分公司工作,所以需要對city資料進行更新
第一種:直接覆蓋原值
idname
city
101luna
chengdu
這樣處理,最容易實現,但是沒有保留歷史資料,無法分析歷史變化資訊
第二種:新增維度行
當有維度屬性發生變化時,生成一條新的維度記錄,如下:
idname
city
101luna
chongqing
101luna
chengdu
但是這樣,當與別的表通過id關聯時,有兩個101的id資料,這樣是有問題的;所以就需要**鍵的支援。(在資料倉儲的術語裡面,這個唯一標識資料倉儲表記錄的鍵我們稱之為 surrogate key **鍵)
sk_id
idname
city
001101
luna
chongqing
002101
luna
chengdu
現在每條資料都唯一,但又乙個問題,現在不知道哪個是當前在用的資料,雖然可以通過**鍵找最大的(因為主鍵往往是自增的,最大的通常是最新的資料),但某些情況下要插入歷史資料就不好找了,所以在維度表中加入時間序列,用null來標識哪條是當前最新資料,有變化再進行更新。
sk_id
idname
city
start_time
end_tinme
001101
luna
chongqing
2017/08/27
2018/06/20
002101
luna
chengdu
2018/06/20
null
第三種:新增屬性列
idname
curr_city
old_city
101luna
chengdu
chongqing
這種方式的優點是,可以同時分析當前及前一次變化的屬性值
總結:在實際建模中,我們可以聯合使用三種方式,也可以對乙個維度表中的不同屬性使用不同的方式;這些都是需要根據實際情況來決定,但目的都是一樣的,就是能夠支援方便的分析歷史變化情況。
緩慢變化維
緩慢變化維 在維度建模的資料倉儲中,通常會有乙個概念叫slowly changing dimensions,譯為 緩慢變化維 經常會被簡寫為scd。緩慢變化維的提出是因為在實際中某些情況下,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維。處...
緩慢變化維
緩慢變化維 維度建模的資料倉儲中,有乙個概念叫slowly changing dimensions,中文一般翻譯成 緩慢變化維 經常被簡寫為scd。緩慢變化維的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維,並且把處...
緩慢變化維 II
首先說一下概念,緩慢變化維 slowly changing dimensions 指的是 維度表裡面的資料並非是始終不變的,總會隨著時間發生變化 假設我們有一張我們公司的銷售員維度表如下,記錄了每個銷售員的一些基本資訊,那麼隨著時間的變化銷售員可能會在各省公司間調崗,如將周杰倫調入北京分公司,針對這...