Integration Services 學習(3)

來源:互聯網
上載者:User

容器是Integration Services 包中非常重要的一部分功能,它可以對控制流程中的任務進行直觀的劃分與組織,使包的結構簡明扼要、易於管理、易於維護。
  在Integration Services 中,主要有以下三種類型的容器: 序列容器(SequenceContainers)、For 迴圈、Foreach 迴圈。下面我們將一一介紹這三種容器的使用方法。
  (一)、序列容器(SequenceContainers)。
  序列容器是一種十分簡單,但使用非常廣泛的容器,它可以對控制流程的任務流組件進行結構化處理,把一些業務相關的工作群組件,放到一個序列容器中,使整個包看起來更加整潔、美觀,就如同我們家裡的書櫃、衣櫃似的,把不同種類的東西整理在裡面,收藏起來,既美觀,又易於取用。
  比如,在一個Integration Sevices包中,包含有財務資料、業務資料。整個包中的工作群組件會非常多,如果不對它們進行分組管理,整個包看起來就會比較亂,非常難於管理與維護。相反如果我們將處理財務資料的任務,放入一個序列容器中,將處理業務資料的任務放入另一個序列容器,整個包看起來,就會一目瞭然,哪些任務是處理財務資料,哪些任務是處理業務資料了,非常清楚。
 
   不僅如此,如果點擊右上方象箭頭一樣的符號,還可才把這些容器摺疊起來,整個包就更加清楚明了,一目瞭然了。

   

 (二)For 迴圈。

  For 迴圈組件,類似於程式設計語言中的For 迴圈,當人們需要反覆執行同一個工作任務或者一系列工作任務的時候,就需要用到For 迴圈,它既可以用於有限次迴圈,也可以用於“無限次迴圈”,比如我們監控包的健全狀態,當錯誤資料>=5時,包停止運行,並通知管理員;又如監控某個檔案夾是否有新檔案產生、監控網路連結是否正常、監控伺服器的各項指標(Cpu、記憶體)是否正常等,論詢特定事件是否發生,這就可以設定為無限次迴圈。

  For 迴圈的使用非常簡單,它主要有三個運算式,分別控制迴圈的執行和終止,

 

  按照,完成運算式的值,For 迴圈就算完成了(@ErrorCount 是使用者自訂變數,需要按照上一課的內容,先定義變數,此處才可以使用)。然後再將需要重複執行的任務,拖入For 迴圈容器中就可以了。

  (三)Foreach 迴圈。

  在.net 程式設計語言中,有一個迴圈也叫做Foreach ,從語義來講,這兩種迴圈如出一徹,沒有什麼差異。在Integration Services 中,Foreach 迴圈是最重要的一種迴圈,也是使用最頻繁的一種迴圈,常用於對一個集合對象中的每一個元素,都要進行處理的情境。比如枚舉某一個檔案夾下的所有檔案,枚舉一個DataTable 中的某一條記錄、枚舉一顆樹(tree )下的每個結點(Node)等。下面我們將Foreach 最常用的兩種類型:Foreach 檔案列舉程式、Foreach ADO 枚舉進行簡單的說明。

  Foreach 檔案列舉程式。

  通常情況下,我們需要迴圈處理某一檔案夾下的每一個檔案,這時就需要用到Foreach 檔案列舉程式了,比如前面我們說到IISLOG的匯入,IisLog 檔案很多,每天都會產生很多個這樣的檔案,如果靠手工一個一個地處理,將很不現實,工作量非常大,如果我們用Foreach 檔案列舉程式,就會非常簡單。,開啟Foreach 迴圈編輯器:

 

  Enumerator:Foreach 枚舉類型。在Foreach迴圈中,有很多種枚舉類型,每一種枚舉類型,就代表著一種使用情境,它們的使用方法也各不相同。每一種枚舉類型的意義及使用方法,請參考官方文檔:http://technet.microsoft.com/zh-cn/library/ms187670(SQL.90).aspx 這裡有非常詳細的說明。 
  我們選擇“Foreach 檔案列舉程式”,然後在列舉程式配置項中,輸入檔案夾的位置(注意這裡是檔案夾的位置,而不是檔案的位置),輸入檔案名稱萬用字元(如*.log

*.txt 等),其它按照預設設定就可以了,如果需要遍曆檔案夾下的子目錄,請勾選“遍曆子檔案夾”選項。

  下一步,選擇“變數映射”,

 

  點擊“確定”,回到控制流程開發面板。

  最後,在“連線管理員”中,找到映射log 檔案的一般檔案串連(IisLog),設定屬性Expressions 的ConnectionString =User::LogFile。

  Foreach 檔案列舉程式就算完成了,F5就可以達到你你想要的效果了。結果如下:

 

  其中的“檔案系統任務”是將處理完成的檔案複份到另外一個檔案夾,或者刪除,以免重複執行。

  Foreach ADO 列舉程式:枚舉表或者表中每一行記錄。

  這種列舉程式在日常開發過程中,也用得非常普遍,類似於TSQL中的遊標,先Select 出一批資料,儲存在ADO記錄集中,然後再一行一行地處理。

  假設有一個商業公司,它在全國或者全市的各個地方,都有連鎖專賣店,每個專賣店都是通過POS進行銷售和收銀,為了保證前端銷售快速穩定地運行,POS系統一般都採用C/S模式,資料與系統程式都儲存在本地。集團公司的中高層主管為了隨時瞭解各專賣店銷售經營情況,就需要定時或者不定時地將專賣店的資料同步到總部資料中心。

  如果我們對每個專賣店DB,都建立一個連結,再建立一個對應的同步任務,隨著專賣店的增加,同步任務也隨之增加,到最後,功能類似的同步任務就會越來越多,而且每增加一個專賣店,ETL包都要增加一個任務,管理起來,將非常困難。

  根據我的經驗是,在總部資料中心建立一張表,專門配置各專賣店DB的連結憑證(ConnectionString), 在同步時,先Select 出各DB的ConnectionString ,然後再動態建立DB串連。這樣一來,程式就小巧、穩定多了。下面我們來看看如何?這一需求:

  首先,定義兩個變數,一個於用儲存ConnectionString(字元型);一個用於儲存ADO 記錄 集(Object 型)。

 

  然後在控制流程中增加一個SQL任務,配置如下:


  Connection:選擇“資料中心”的連結器。

  SQLStatement: 輸入如下SQL,以取出所有配置記錄。

代碼
SELECT 'Data Source=' + strDBServerIP + ';User ID=' + strDBUserID +
       ';Initial Catalog=HumanResource;Provider=SQLNCLI10;Auto Translate=True;' AS
       ConnectionString     
FROM   DbConfig
    ResultSet :選擇“完整結果集”。

  然後切換到“結果集”,配置結果集選項,(注意:User::DataSet 一定要是Object 類型的變數,其它變數都不可用)

 

   點擊“確定”,就完成了各DB的串連配置,下面就看Foreach ADO 迴圈如何來應用這個結果集了。

  找開Foreach 迴圈編輯器,在Enumerator 中選擇“Foreach Ado 枚舉”,

 

   請注意的每一個選項,如果選錯,都可能達不到你想要的效果。

  變數映射,

 

   最後一步,就是將變數映射到OLE DB 的串連上了,從連線管理員中,選擇 DB串連,右擊配置Expressions屬性的ConnectionString =User::ConnectionString ,

 

   整個Foreach ADO 迴圈完成了,F5一切如你所願,綠油油的一遍就會呈現在你的眼前。

  常用的三種容器就介紹完了,當然還有一些其它容器,比如一個包,是一個容器,一個分組(在控制流程中選擇一批任務,右鍵菜單“分組”,就可以將這批任務放在一個Group 內)也是一個容器,但是這些容器都非常簡單,就此略過,不做詳細說明。

  在Inegration Services 中,容器還可以嵌套,每個容器都可以相互嵌套,它們可以有各自的範圍,有各自的命名空間,如果我們善加利用,將會為Integration Services 的結構化開發,提供很多的方便。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.