維度可以根據變化劇烈程度主要分為無變化維度、緩慢變化維度和劇烈變化維度。例如乙個人的相關資訊,身份證號、姓名和性別等資訊資料屬於不變的部分,政治面貌和婚姻狀態屬於緩慢變化部分,而工作經歷、工作單位和培訓經歷等在某種程度上屬於急劇變化字段。
對於劇烈變化維度,通常情況下都是一分為二進行處理的,把其中不常變動的部分單獨抽出來作為乙個維表,按照緩慢變化維方式進行處理;另外一部分也單獨抽取出來,通常作為維度的屬性進行處理。
大多數維度表隨時間的遷移是緩慢變化的。比如增加了新的產品,或者產品的id號碼修改了,或者產品增加了乙個新的屬性,此時,維度表就會被修改或者增加新的記錄行。這樣,在設計維度和使用維度的過程中,就要考慮到緩慢變化維度的處理。
緩慢漸變維,即維度中的屬性可能會隨著時間發生改變,比如包含使用者住址address的dimcustomer維度,使用者的住址可能會發生改變,進而影響業務統計精度,dimcustomer維度就是緩慢漸變維(scd),對於scd,處理方式通常有以下幾種:
type 1:完全不記錄歷史變化資訊,在etl將資料載入scd的時候,對於會產生變化的屬性值直接覆蓋,比如對於dimcustomer的address,每次都會將新的位址update到該字段,因此這個scd實際上總是最新的當前資訊,卻沒能包含歷史資訊
type 2:通過新增記錄來將每一次變化都記錄到scd中,每條記錄都有兩個字段(如effective_start和effective_end)表明該記錄的有效期間,並且可以設定乙個active標誌位欄位,當該字段為true的時候表明這條記錄是最新的狀態,為false的時候表明該記錄是歷史記錄,其有效期間可以通過effective_start和effective_end欄位來查
type 3:通過對會發生變化的字段,新增相應的歷史字段,來記錄最近的變化而非全部變化。比如dimcustomer中有兩個欄位address和address_old,第乙個欄位是使用者的當前住址,後乙個欄位是使用者之前一次的住址,顯然,更久之前的資訊就無法追溯了
type 4:除了乙個記錄當前資訊的維度外,單獨建立乙個歷史資訊維度,該維度中需要包含有效期間字段(如effective_start和effective_end)
type 5:可以看到,對於type 1/2/3,都是對於scd中漸變屬性的處理方式,而針對乙個包含多字段的複雜的scd,可能需要結合以上三種處理方式。比如對於dimcustomer中的使用者****屬性email,如果業務上並不重要,那麼這個字段可以採取type 1的方式,即每次只保留最新的聯絡方式,覆蓋原來的;假如業務中需要分析使用者所在地region,那麼很可能需要用到type 2,記錄每乙個region的改變;而對於位址資訊address,可能並不需要追溯很久的變化,那麼加乙個address_old欄位來記錄上一次的住址就夠了
資料倉儲 緩慢漸變維 拉鍊表
緩慢漸變維 維度會隨著時間發生緩慢的變化。處理方式 全量快照 拉鍊表全量快照很簡單,今天我們來看看拉鍊表。拉鍊表是處理緩慢漸變維的一種方式,它區別於正常的表而言,會多兩個字段,start date和end date,代表這條資料的起始時間和結束時間。如 james同學哪天想不開了,他從男的變成了女的...
緩慢變化維
一.什麼是緩慢變化維?緩慢變化維 slowly changing dimensions,scd 它的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度,一般被稱為緩慢變化維 並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡...
緩慢變化維
緩慢變化維 在維度建模的資料倉儲中,通常會有乙個概念叫slowly changing dimensions,譯為 緩慢變化維 經常會被簡寫為scd。緩慢變化維的提出是因為在實際中某些情況下,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維。處...