SSIS組件轉換_排序、合並、合並聯轉換


一、排序轉換(Sort)

排序轉換功能是按升序或降序對輸入流中的數據進行排序.並將排序后的數據復制到轉換輸出中.它類似於T-SQL中的order by 語句。下面以數據庫AdventureWorks為例來介紹一下排序轉換的使用。

1.新建名為”SortDemo”的包,在控制流中拖放一個數據流任務,然后在連接管理器中建立一個OLE DB連接器,用於連接AdventureWorks數據庫。

2.在BIDS界面左邊的變量工具箱中設置一個變量Count 類型是Int32。

3.在數據流選項卡中拖放一個OLE DB數據源,連接AdventureWorks,選擇Production.product.如圖:

 

4.拖放一個排序轉換任務。按如下圖設置:

 

 

 

下面詳細介紹一下該圖中各個屬性的使用方法:

屬性

說明

可用輸入列

使用此復選框可以指定要排序的列

名稱

可用輸入列的名稱

傳遞

指示是否在排序輸出中包含該列

輸入列

選擇需要排序的列,也可以通過可用輸入列中選擇

輸出別名

為要排序的輸入列設置一個輸出別名,默認為輸入列名稱

排序類型

指示是按升序還是按降序排序

排序順序

指示列的排序順序。必須是手動設置此項,而且設置時按初始值為1的遞增數據

上圖中理解為先按Name降序,再按ProductName升序排序。

5.拖放一個行計數轉換,將排序與之連接,箭頭指向行計數轉換。並設置

 

其中變量User::Count在變量工具箱中創建。

6.在排序轉換與行計數轉換中的綠色連線上建立一個帶有Grid網格的查看器。然后執行包。如下圖:

 

我們發現Name和ProductName列按我們在排序轉換中的設置輸出到數據管道中。

二、合並轉換(Merge)

合並轉換是將兩個排序后的數據集合合並為一個數據集。根據每個數據集中的行的鍵列的值,將這些行插入到輸出中。合並轉換功能類似於T-sql語句中的Union All子句。

合並轉換要求輸入列具有匹配的源數據。在SSIS設計器中,合並轉換的用戶界面會自動映射映射具有元數據的列。然后你可以手動映射具有兼容數據類型的其他列。

下面我們以AdventureWorks數據庫中的Production.Product表為例介紹如何使用合並轉換。

 

1.創建一個名為“MergerDemo”的包,然后在控制流中拖放一個DataFlow任務,在連接管理器中創建一個OLE DB連接器,用於連接AdventureWorks數據庫。

2.在BIDS中的變量工具箱中創建一個變量Count,類型為Int32。

3.在數據流中拖放兩個OLE DB數據源。連接器連接AdventureWorks數據庫,兩個數據源的訪問模式都選擇sql命令。Sql語句分別為:

select top 5 * from Production.Product

select top 6 * from Production.Product

4.在數據流中拖放兩個排序轉換功能。分別對兩個數據源數據的列ProductNumber按升序排序。

5.拖放一個合並轉換,分別與兩個排序轉換連接。設置如下:

 

 

 

6.拖放一個行計數。與合並轉換相連。設置VariableName=User::Count

7.在合並轉換與行計數轉換中間的連接創建一個數據查看器。然后執行包。結果如下:

 

 

 

8.在彈出框中可以看到我們合並的部分數據。可以持續單擊綠色三角按鈕來查看合並的數據。想讓包執行完畢。可以關閉彈出框即可。

到此,合並轉換功能的使用已介紹完畢。其中一些注意的事項我們將與合並聯接轉換一起介紹。

三、合並聯接轉換(Merge Join)

合並聯接轉換功能是將兩個已排序的輸入列的數據通過使用FULL JOIN、Left JOIN或INNERR JOIN聯接形成一個輸出數據集。它類似於T-SQL語句中的連接查詢語句。但又與之有所區別。

  •  使用合並聯接要求輸入已排序的數據。而T-SQL中的連接查詢不需要

  • 如果兩個輸入列關聯的列是字符類型。則需要對它進行大小寫轉換或去除空格等操作。而在T-sql的連接查詢中不需要。

了解這些信息后,下面介紹如何使用。

1.創建一個名為“MergeJoinDemo”包,在控制流中拖放一個Data Flow 任務。在連接管理器中添加一個OLE DB連接器。用於連接AdventureWorks數據庫。

2.在變量工具箱中創建一個如下圖的變量

 

 

3.在數據流選項卡中拖放兩個OLE DB數據源。都連接剛才創建的名為“LocalHost.AdventureWorks”連接器。數據訪問模式使用sql命令。Sql語句分別如下

select ProductID,ProductModelID,Name from Production.Product

select ProductModelID,Name from Production.ProductModel

4.拖放兩個排序轉換到數據流選項卡中,分別對兩個數據源數據的列ProductModelID按升序排序。

5.拖放一個合並聯接轉換,分別與兩個排序轉換連接,然后雙擊合並聯接轉換,彈出窗口根據窗口設置合並聯轉換屬性。

 

 

在圖中有一個聯接類型選項,它包含三種類型:左外部聯接、內部聯接和完全外部聯接,分別等同於T—SQL中的LEFT JOIN、INNER JOIN和FULL JOIN

6.拖放一個行計數。與合並聯接轉換相連。設置VariableName=User::Count

7.在合並轉換與行計數轉換中間的連接創建一個數據查看器。然后執行包。結果如下:

 

在彈出框中可以看到我們合並的部分數據。可以持續單擊綠色三角按鈕來查看合並的數據,想讓包執行完畢,可以關閉彈出框即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM