缓慢渐变维度的处理方式
維度可以根據變化劇烈程度主要分為無變化維度、緩慢變化維度和劇烈變化維度。例如一個人的相關信息,身份證號、姓名和性別等信息數據屬于不變的部分,政治面貌和婚姻狀態屬于緩慢變化部分,而工作經歷、工作單位和培訓經歷等在某種程度上屬于急劇變化字段。
對于劇烈變化維度,通常情況下都是一分為二進行處理的,把其中不常變動的部分單獨抽出來作為一個維表,按照緩慢變化維方式進行處理;另外一部分也單獨抽取出來,通常作為維度的屬性進行處理。
大多數維度表隨時間的遷移是緩慢變化的。比如增加了新的產品,或者產品的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字段來記錄上一次的住址就夠了
轉載于:https://www.cnblogs.com/wufengtinghai/archive/2013/05/05/3060631.html
總結
以上是生活随笔為你收集整理的缓慢渐变维度的处理方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: artDialog对话框在PHP下的简单
- 下一篇: hdu 2579 BFS