SSIS 中的行採樣轉換提供了一個選項,用於指定您希望從數據源檢索的行數。SSIS 行採樣轉換數據是隨機選擇的,除非您使用此“使用以下隨機種子”選項。
SSIS 中的行採樣轉換將從源獲取所有數據,並隨機提取選定的行數。SSIS 行採樣為您提供兩個輸出。第一個是選定的數據,第二個是未選定的數據。此行採樣轉換對於訓練數據挖掘模型很有用。
現在理解數據建模還為時過早,所以讓我們舉個簡單的例子——例如,一家軟件公司有 100 名員工。公司必須選出十名員工出國旅行。那麼,公司可以使用 SSIS 行採樣轉換隨機選出十名員工。如果公司傾向於每年都選擇相同的十名員工,則可以選中“使用以下隨機種子”選項。
SSIS 行採樣轉換示例
步驟 1:從工具箱將數據流任務拖放到控制流中,並將其命名為“行採樣轉換”。

雙擊它將打開數據流選項卡。有關更多轉換,請訪問 >> 單擊此處。
步驟 2:從 SSIS 工具箱將 OLE DB 源、行採樣轉換拖放到數據流區域。

步驟 3:雙擊數據流區域中的 OLE DB 源。它將打開 連接管理器 設置,並提供編寫 SQL 語句的空間。
目前,我們從 Adventure Works DW 2014 數據庫的 DimCustomers 中選擇了前 1000 行,並希望在目標表中選擇 300 行。命令文本如下所示。
SELECT TOP 1000 [FirstName] ,[LastName],[BirthDate],[Gender],[EmailAddress]
,[YearlyIncome],[EnglishEducation],[Phone]
FROM [AdventureWorksDW2014].[dbo].[DimCustomer]
ORDER BY [YearlyIncome] DESC
步驟 4:單擊 OLE DB 源編輯器中的“列”選項卡以驗證列。在此選項卡中,我們也可以取消選中不需要的列。

提示:如果您不需要任何列,請不要將它們添加到您的 SQL 命令中。
步驟 5:單擊確定,使用箭頭連接 OLE DB 源和行採樣轉換 - 雙擊 SSIS 行採樣轉換進行配置。
在這裡,我們選擇 300 行作為選定的行,其餘 700 行作為未選定的行。

提示:如果您選中“使用以下隨機種子”選項,則每次運行包時都會選擇相同的行集。如果沒有,則行採樣轉換將隨機選擇行。
步驟 6:當我們嘗試將 SSIS 行採樣轉換連接到 OLE DB 目的地時。一個名為“輸入輸出選擇”窗口的彈出窗口會提供選擇輸出的選項。

在這裡,我們選擇“選定的行”輸出。單擊確定,然後從 SSIS 行採樣拖放另一個箭頭到第二個目的地。在這裡,它將自動選擇“剩餘行”選項。
步驟 7:現在,我們需要提供目標的服務器、數據庫和表詳細信息。因此,雙擊“選定的行”的 OLE DB 目的地並提供所需的信息。

在這裡,我們選擇 [Adventure Works DW 2014] 數據庫中存在的 [Row Sampling Selected Rows] 表。
步驟 8:單擊“映射”選項卡以查看列是否正確映射。

單擊確定完成 [選定的行] 的 OLE DB 目的地的配置。
注意:如果您的輸入列名和目標列名相同,則智能會自動映射。如果列名有更改,我們必須手動指定。
步驟 9:我們需要為剩餘的行配置 OLE DB 目的地。因此,雙擊 OLE DB 目的地並提供所需的信息。

在這裡,我們選擇 [Adventure Works DW 2014] 數據庫中存在的 [Row Sampling Remaining Rows] 表。
單擊“映射”選項卡以檢查源列是否已正確映射到目標列,然後單擊確定完成 SSIS 包設計中的行採樣轉換。
讓我們運行行採樣轉換包。

讓我們打開 Management Studio 並檢查兩個表的 SSIS 行採樣轉換結果。
選定的行表
SELECT [FirstName],[LastName],[BirthDate]
,[Gender],[EmailAddress], [YearlyIncome]
,[EnglishEducation],[Phone]
FROM [AdventureWorksDW2014].[dbo].[Row Sampling Selected Rows]
SELECT COUNT (*) FROM [AdventureWorksDW2014].[dbo].[Row Sampling Selected Rows]

您可以看到該表中的行數 = 300。
剩餘行表
SELECT [FirstName],[LastName],[BirthDate]
,[Gender],[EmailAddress], [YearlyIncome]
,[EnglishEducation],[Phone]
FROM [AdventureWorksDW2014].[dbo].[Row Sampling Remaining Rows]
SELECT COUNT (*) FROM [AdventureWorksDW2014].[dbo].[Row Sampling Remaining Rows]
