緩慢變化維

2021-10-24 20:17:54 字數 1470 閱讀 1814

緩慢變化維

在維度建模的資料倉儲中,通常會有乙個概念叫slowly changing dimensions,譯為「緩慢變化維」,經常會被簡寫為scd。緩慢變化維的提出是因為在實際中某些情況下,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維。

處理緩慢變化維的方法通常分為以下幾種

type 1 直接覆蓋原值。這樣處理最簡單,且容易實現,但是沒有保留歷史資料,無法分析歷史變化資訊。只關注最新的資料狀態下可以採用此方式。

例,某司有銷售維表,每個銷售對應有門店資訊,假設趙一2023年10月1日由保定門店調崗至門京門店,則只需要保留最新資料,但趙一此時間段之前所有的業績也將歸為北京門店下。

type 2新增維度行。這樣處理需要**鍵的支援。實現方式是當有維度屬性發生變化時,生成一條新的資料記錄,這時會有乙個問題,當事實表中的銷售資料與此維度表進行關聯時,由於存在多條saler_id相同的資料,會關聯重複,這時就引入了**鍵的概念,相當於資料倉儲為維度表分配乙個主鍵,而不用當初業務資料庫中的主鍵,如下圖

不過此時又存在另乙個問題,當業務事實表中有新的銷售業績資料插入的時候,需要在外鍵列中插入維度表的**鍵id,那麼此刻需要先找到維度表中的saler_id,然後再找到最大的id插入進去(因為主鍵往往是自增的,最大的肯定是最新的),但是某些情況下如果向事實表中插入歷史資料的情況,就無法判斷具體是哪個門店的業績了,所以往往在維度表中同樣加入時間列,如2020/1/1-2020/10/1來記錄具體時間段內銷售歸屬門店資訊,用時間表示當前資料有效期。

type 3新增屬性列。這種處理的實現方式是對於需要分析歷史資訊的屬性新增一列,來記錄該屬性變化前的值,而本屬性字段使用type 1來直接覆蓋。這種方式的優點是可以同時分析當前及前一次變化的屬性值,缺點是只保留了最後一次變化資訊。

有時需求中並非所有欄位的變化都進行記錄並且不需要每次變化都記錄,比如我們可能只關心最近兩次變化,可以新增屬性列

總結:

type 1 scd :不記錄歷史資料,新資料覆蓋舊資料

type 2 scd: 儲存多條記錄,直接新添一條記錄,同時保留原有記錄,並用單獨的專用的字段儲存區別

type 3 scd:新增歷史列,用不同的字段儲存變化痕跡.它只能儲存兩次變化記錄.適用於變化不超過兩次的維度

緩慢變化維

一.什麼是緩慢變化維?緩慢變化維 slowly changing dimensions,scd 它的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度,一般被稱為緩慢變化維 並且把處理維度表的歷史變化資訊的問題稱為處理緩慢變化維的問題,有時也簡...

緩慢變化維

緩慢變化維 維度建模的資料倉儲中,有乙個概念叫slowly changing dimensions,中文一般翻譯成 緩慢變化維 經常被簡寫為scd。緩慢變化維的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生緩慢的變化。這種隨時間發生變化的維度我們一般稱之為緩慢變化維,並且把處...

緩慢變化維 II

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