4 關於數據倉庫維度數據處理的方法探究系列——緩慢變化維處理——覆蓋方式


原創於2006年12月09日,2009年10月15日遷移至此。


此種方式是緩慢變化維中最簡單的一種,它用於保證數據倉庫中的數據為當前的最新值,不保留歷史數據,如發現數據倉庫中當前數據已為舊數據,則對當前已有記錄進行值更新,主鍵值不變,如發現有新數據,則把新數據加載到數據倉庫中,並賦予新的代理主鍵值。

 

3.3實現

3.3.1覆蓋(Type 1Dimension -- keep most recent values in target

3.3.1.1原理

此種方式是緩慢變化維中最簡單的一種,它用於保證數據倉庫中的數據為當前的最新值,不保留歷史數據,如發現數據倉庫中當前數據已為舊數據,則對當前已有記錄進行值更新,主鍵值不變,如發現有新數據,則把新數據加載到數據倉庫中,並賦予新的代理主鍵值。通俗地說,就是指對於源表中的同一條數據,目標(數據倉庫)中始終只會保留一條,也就是最新的一條,一旦第一次插入后,數據就存在了,其在維表中的ID(代理主鍵)就不再改變了,發生數據改變時,只對其字段作Update操作。

這種方式在確認數據的歷史不需要記錄,只需保留當前最新信息的時候使用。

 

CREATE TABLE t_dem_xxx

(

ID VARCHAR(20) NOT NULL,

Name1 VARCHAR(50),

Name2 VARCHAR(50),

CONSTRAINTPK_t_dem_xxx PRIMARY KEY (ID)

)

go

CREATE TABLE t_tmp_xxx

(

ID VARCHAR(20) NOT NULL,

Name1 VARCHAR(50),

Name2 VARCHAR(50),

CONSTRAINTPK_t_tmp_xxx PRIMARY KEY (ID)

)

go

CREATE PROCEDURE p_dem_xxx

AS

--維度抽取存儲過程

BEGIN

DECLARE

@num NUMERIC(10,0)

SELECT @num =COUNT(*) FROM t_dem_xxx

--如果原表為空,構造缺省值

IF @num = 0

BEGIN

INSERT INTOt_dem_xxx (ID,Name1,Name2) SELECT '-2','NULL',''

INSERT INTOt_dem_xxx (ID,Name1,Name2) SELECT '-1','缺失外鍵',''

END

--根據主鍵插入在維度表中找不到的基礎數據

INSERT INTO t_dem_xxx

(

ID ,

Name1 ,

Name2

)

SELECTa.ID,a.Name1,a.Name2

FROM t_tmp_xxxa LEFT OUTER JOIN t_dem_xxx b

ON a.ID = b.ID

WHERE b.ID ISNULL

--根據主鍵更新原基礎表中變化的各屬性字段

UPDATE t_dem_xxx

SET Name1 = a.Name1,

Name2= a.Name2

FROMt_tmp_xxx A,t_dem_xxx B

WHERE a.ID =b.ID

AND b.IDNOT IN ('-1','-2')

END

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com