一、排序轉換(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.在合並轉換與行計數轉換中間的連接創建一個數據查看器。然后執行包。結果如下:
在彈出框中可以看到我們合並的部分數據。可以持續單擊綠色三角按鈕來查看合並的數據,想讓包執行完畢,可以關閉彈出框即可