問題
我們很多年來都日常加載數據倉庫,每次加載的都是真實記錄。我們想批處理地執行這個過程並能夠在發生錯誤的情況下重啟失敗時間點。你能夠為我們提供一個例子介紹下我們該怎樣在一個SSIS包中執行這個批處理功能嗎?
專家解答
SSIS使用Toolbox中的現有組件能夠很好地支持批處理。在SSIS中執行批處理的一個很簡便的方法是將記錄分組放到批處理中,處理每個批處理,然後將每個組更新為處理過的。首先讓我們描繪一個場景然後執行一個SSIS包來完成這個工作。
在開發報表應用程序中,一個很常見的需求是聚合數據使得報表查詢可以快速地執行。讓我們假設我們想要按月份聚合數據。我們還想具有能夠調整聚合數據並只重新計算調整過的按月聚合的能力。
我們可以假設一個SSIS包具有以下步驟:
Get Batch List(獲得批處理列表)是一個Execute SQL任務,它將源數據分組在批處理中執行,創建一個每個批處理中包含一個單獨記錄的結果集。
Process Batch Loop(執行批處理循環)是一個Foreach Loop容器,它迭代這個結果集記錄;例如,這個結果集中的每條記錄執行一次。
Transaction Container(事務容器)是一個序列容器,它包含這個循環的每個迭代要執行的任務;它控制事務,如果成功就提交,如果失敗就回滾。
Append Batch to Sales History(附加批處理到銷售歷史)是一個Execute SQL任務,它提取一批記錄並將它們插入到一個歷史表中。
Compute Aggregation(計算聚合)是一個Execute SQL任務,它對這個批處理執行聚合並更新聚合表。
Mark Batch as Processed(將批處理標記為處理過的)是一個Execute SQL任務,它更新源表中的記錄以顯示它們已經處理過了。
在下面的章節中,我們將詳細討論SSIS包中的每個步驟。從建立開始,然後逐步介紹。