程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 通過設置 CheckPoints 檢查點來增強 SSIS Package 流程的重用性

通過設置 CheckPoints 檢查點來增強 SSIS Package 流程的重用性

編輯:關於SqlServer

通常一個 ETL Package 是由多個控制流和數據流共同組成,有的時候 ETL 的步驟可能會比較多,整個流程執行下來的時間可能比較長。假設在 ETL Package 中包含5個Task,前3個Task執行超過1個小時,到了第4個Task的時候發生失敗。如果下次執行的時候重新從第1個任務開始執行,那麼又要花費1個小時等待 1-3 任務執行,無疑在效率上講是非常低的。特別是在數據倉庫的應用上,往往從數據源到Staging的過程中有千萬級甚至億級的數據要加載,加載完畢之後再進入到維度和事實表。如果在進入維度和事實表的過程中發生失敗,就意味著下次需要重新加載數據到Staging表。而通過檢查點CheckPoint的設置可以解決這個問題,通過合理的設置可以跳過上一次已經成功執行過一些步驟而直接從失敗的地方重新開始執行,這樣大大的提高了包的執行效率。

下面這個 ETL 示例簡單的模擬了從一個數據源抽取數據然後輸出到一個數據表和一個平面文件的過程,之後再看 CheckPoint 的使用。

USE BIWORK_SSIS
GO
    
IF OBJECT_ID('CK_Address') IS NOT NULL
DROP TABLE CK_Address 
GO
    
IF OBJECT_ID('CK_AddressAudit') IS NOT NULL
DROP TABLE CK_AddressAudit
GO
    
CREATE TABLE CK_Address
(
    AddressID INT,
    AddressLine1 NVARCHAR(60),
    AddressLine2 NVARCHAR(60),
    City NVARCHAR(30)
)
    
CREATE TABLE CK_AddressAudit
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    CityName NVARCHAR(60),
    Counts INT
)

ETL 過程 -

EST_TruncateAddress - TRUNCATE TABLE dbo.CK_Address  TRUNCATE TABLE dbo.CK_AddressAudit

DFT_LoadAddress - 從 AdventureWorks2012.People.Address 中抽取數據到 dbo.CK_Address 中

DFT_SaveAddressAudit - 對 CK_Address 表中的數據做出一些統計然後寫入到 dbo.CK_AddressAudit 中

DFT_OutputAddressAudit - 將 dbo.CK_AddressAudit 中的數據輸出到一個文本文件中

輸出結果- CK_Address 和 CK_AddressAudit

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