為什麼會分享這個聽起來很奇怪的東西?因為站在的筆者的視角中,只要是做資料倉儲的小夥伴們,在工作中基本上都會接觸和維度建模相關的內容,而談到維度建模,就少不了會和維度表打交道。我們要談的就是維度表相關的知識點。
在正式開始之前,先解釋一下什麼是緩慢變化維度。筆者個人理解,緩慢變化維度其實就是指在維度表中那些會隨著時間變化的字段,比如使用者基本資料。
注:緩慢是乙個相對的概念。與緩慢變化的緯度相比,資料增長快速是事實表
scd(slowly changing dimensions),中文一般翻譯成「緩慢變化維」。
緩慢變化維的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維,並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡稱為處理scd的問題。
在《資料倉儲工具箱》這本書中一共列舉了5中基礎緩慢變化維型別和3種混合緩慢變化維型別。我們只分享一下熟悉的4種型別。
此型別維度屬性值絕不會變化,因此事實始終按照該原始值分組。
比如客戶的原始信用度分值,就可以用該型別。
對於型別一來說,對其相應需要重寫維度行中的舊值,以當前值替換。因此其始終反映最近的情況。
注意:這樣處理,易於實現,但是沒有保留歷史資料,無法分析歷史變化資訊。
資料倉儲系統的目標之一是正確地表示歷史。當提及緩慢變化維度屬性時,型別2就是主要應用於支援這一需求的技術。
型別二的乙個典型代表其實就是拉鍊表,在此,著重強調一下拉鍊表,它的確是一種非常有效的工具。隨著使用的深入,你就越能發現它的魅力。
儘管型別2能夠區分歷史情況,但它無法保證能夠將新屬性值和過去的歷史事實關聯,反之亦然。
這時候就可以用到型別3。
注意:這種型別使用哪種場景呢?它比較適合需要根據先後順序來得出某種結論的場景。
舉個例子,假設我們有乙個使用者表表,裡面有乙個欄位是使用者暱稱。現在我們現在想知道這個使用者的上乙個暱稱是多少。
這個問題有兩種方式:
我們在一張歷史狀態表中找到上乙個暱稱是什麼,但是這樣會比較麻煩,可能會掃瞄很多的資料。
就是我們現在講的這種方式,加乙個字段,就方便很多了。
這種方式的優點是可以同時分析當前及前一次變化的屬性值,缺點是只保留了最後一次變化資訊。
這種方案在一些場景中是可以解決很多問題的,不過我們不能無限制地新增新的字段來記錄歷史的狀態,因此在使用這種方案的時候會有一些取捨。
展開閱讀全文
維度建模的緩慢變化維
1維度建模的數倉中,有乙個概念scd slowly channing dimensions.緩慢變化維。因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失而發生緩慢的變化,這種隨時間發生變化的維度我們稱之為緩慢變化維。如何處理緩慢變化維的影響,舉個例子 以使用者的地理資訊來舉例 第一種方法...
數倉 維度建模與緩慢變化維
維度表示你要對資料進行分析時所用的乙個量,比如你要分析產品銷售情況,你可以選擇按類別來進行分析,或按區域來分析.這樣的按.分析就構成乙個維度。前面的示例就可以有兩個維度 型別和區域。另外每個維度還可以有子維度 稱為屬性 例如類別可以有子型別,產品名等屬性。下面是兩個常見的維度表結構 產品維度表 pr...
緩慢變化維
一.什麼是緩慢變化維?緩慢變化維 slowly changing dimensions,scd 它的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度,一般被稱為緩慢變化維 並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡...