程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SSIS:數據倉庫中實現Slowly Changing Dimension緩慢漸變維度的三種方式

SSIS:數據倉庫中實現Slowly Changing Dimension緩慢漸變維度的三種方式

編輯:關於SqlServer

關於 Slowly Changing Dimension 緩慢漸變維度的理論概念請參看 數據倉庫系列 - 緩慢漸變維度 (Slowly Changing Dimension) 常見的三種類型及原型設計

本篇文章總結了實現緩慢漸變維度的幾種方式,並且分析了 Changing Attribute 和 Historical Attribute 輸出的邏輯過程。

示例一:SSIS 中使用 Slowly Changing Dimension 控件

示例二:使用 SQL 中 Merge 語句實現簡單的 SCD 效果

示例三:在 SSIS 中使用 Lookup, Conditional Split, Multicast 等控件實現 SCD 效果

測試表以及測試數據,其中 Customer 是數據源表,DimCustomer 模擬的是數據倉庫中的 Customer 維度表。

每個示例都是從空表開始,第一次運行的時候 Dimension 表沒有數據,第二次運行之前將添加幾條 數據到 Customer 數據源表中,並同時修改若干數據。

但是要注意這個示例對數據源數據的加載是全部加載,而不考慮基於數據源數據的增量加載,關於增 量加載的實現會放在 BI 系列的其它文章中講解。

USE BIWORK_SSIS
GO
    
IF OBJECT_ID('Customer') IS NOT NULL
DROP TABLE Customer 
GO
    
IF OBJECT_ID('DimCustomer') IS NOT NULL
DROP TABLE DimCustomer 
GO
    
CREATE TABLE Customer
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    FullName NVARCHAR(50),
    City NVARCHAR(50),
    Occupation NVARCHAR(50)
)
    
CREATE TABLE DimCustomer 
(
    CustomerID INT PRIMARY KEY IDENTITY(1,1),
    CustomerAlternateKey INT,
    FullName NVARCHAR(50),
    City NVARCHAR(50),
    Occupation NVARCHAR(50),
    StartDate DATETIME,
    EndDate DATETIME,
    IsCurrent BIT DEFAULT(1)
)
    
INSERT INTO BIWORK_SSIS.dbo.Customer VALUES
('BIWORK','Beijing','IT'),
('ZhangSan','Shanghai','Education'),
('Lisi','Guangzhou','Student')

示例一  SSIS 中的 Slowly Changing Dimension

新建一個 Package 並拖放一個 Data Flow,在 Data Flow 中建立好與 Customer 表的數據源連接, 新建 Slowly Changing Dimension SCD_DimCustomer。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved