緩慢變化維

2021-08-21 21:32:15 字數 1436 閱讀 1544

一.什麼是緩慢變化維?

緩慢變化維(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 指的是 維度表裡面的資料並非是始終不變的,總會隨著時間發生變化 假設我們有一張我們公司的銷售員維度表如下,記錄了每個銷售員的一些基本資訊,那麼隨著時間的變化銷售員可能會在各省公司間調崗,如將周杰倫調入北京分公司,針對這...