SSIS 条件分割转换

SSIS 中的条件分割转换就像 IF 条件或 CASE 语句一样。它检查给定的条件。输出将根据条件结果发送到适当的目标路径。它有一个输入和多个输出。

例如,如果我们想将班级中分数大于 40 的学生存储在一张表中,而将分数小于 40 的学生存储在另一张表中,那么我们可以使用此 SSIS 条件分割转换通过条件来拆分数据。请注意,条件分割是区分大小写的。

SSIS 条件分割转换示例

步骤 1:从工具箱将数据流任务拖放到控制流中,并将其命名为条件分割转换。

Data Flow Task 1

双击它,它将打开 SSIS 数据流选项卡。有关更多转换,请单击 此处

步骤 2:从工具箱将 OLE DB 源拖放到数据流区域。双击数据流区域中的 OLE DB 源 将打开连接管理器设置,并为编写我们的 SQL 语句提供空间。

Ole Db Source Editor 2

用于我们 SSIS 条件分割转换 OLE DB 源的命令是

USE AdventureWorksDW2014
GO

SELECT PROD.[EnglishProductName] ,PROD.[Color],[SalesOrderNumber],[UnitPrice], [ExtendedAmount],[ProductStandardCost],[TotalProductCost],[SalesAmount],[TaxAmt],[Freight]
FROM [FactInternetSales]
INNER JOIN [DimProduct] AS PROD ON [FactInternetSales].[ProductKey] = PROD.[ProductKey]
ORDER BY PROD.[EnglishProductName]

步骤 3:单击列选项卡以验证列。在此选项卡中,我们还可以取消选中不需要的列。单击“确定”。

Check the Input Columns 3

配置 SSIS 条件分割转换

步骤 4:从工具箱将条件分割转换拖放到数据流区域,然后双击它以提供条件。

Conditional Split Transformation in SSIS 4

我们在本次条件分割转换中使用的条件是

  1. 行数 < 400:SalesAmount < 400
  2. 行数在 400 到 2000 之间:SalesAmount >= 400 && SalesAmount < 2000
  3. 其余行将作为默认输出,我们将其命名为 [Rows > 2000]

从上面可以看出,我们在 SSIS 的条件分割转换中使用了两个条件和一个默认输出。因此,我们总共得到三个输出。

步骤 5:从工具箱将三个 OLE DB 目标拖放到数据流区域,并将它们重命名为 Condition Split 1、Condition Split 2 和 Condition Split 3。

Conditional Split Transformation 5

步骤 6:从条件分割转换拖动箭头到 OLE DB 目标(Condition Split 1),将弹出输入输出选择窗口以选择适当的输出。让我们选择 [Rows <400] 输出,如下图所示。

Input Output Selection Window 6

点击确定

步骤 7:现在,我们需要提供 OLE DB 连接管理器和目标表的详细信息。因此,双击 Condition Split one 并提供所需信息。

Conditional Split Transformation 7

从上面的屏幕截图中,您可以看到我们在数据库中选择了 [Conditional Split 1]。

步骤 8:单击映射选项卡以检查源列是否已精确映射到目标列。

Conditional Split Transformation 8

点击确定

步骤 9:从 SSIS 条件分割转换拖动另一个箭头到 OLE DB 目标(Condition Split 2)。弹出输入输出选择窗口以选择输出。这次,我们将选择 [Rows between 400 to 2000] 输出,如下图所示。

Conditional Split Transformation 9

步骤 10:让我们为我们的第二个输出提供 OLE DB 连接管理器和目标表的详细信息。为此,请双击 Conditional Split 2 并提供所需信息。

从上面的屏幕截图中,您可以看到我们在数据库中选择了 [Conditional Split 2]。

重复步骤 8 并单击“确定”。

步骤 11:从条件分割转换拖动另一个箭头到 OLE DB 目标(Condition Split 3)。在这里,我们正在配置默认输出数据。因此,双击 OLE DB 目标并提供信息。

从上面的屏幕截图中,您可以看到我们在数据库中选择了 [Conditional Split 3]。

重复步骤 8 并单击“确定”。

我们完成了 SSIS 条件分割转换包的开发。是时候运行这个包了。

Conditional Split Transformation in SSIS 12

让我们在 [Conditional Split 1] 表中查看结果。首先,打开 Management Studio 并编写 select 语句 来检查结果。

-- Conditional Split Transformation Result
SELECT [EnglishProductName] AS NAME
,[Color]
,[SalesOrderNumber] AS NUMBER
,[UnitPrice]
,[ExtendedAmount] AS ExtndAmount
,[ProductStandardCost] AS standardCost
,[TotalProductCost] AS ProductCost
,[SalesAmount] AS Amount
,[TaxAmt] AS Tax
,[Freight]
FROM [Conditional Split 1]
Table 1

通过编写下面的 select 语句,让我们在 [Conditional Split 2] 表中查看结果以检查结果。

SELECT [EnglishProductName] AS NAME
      ,[Color]
      ,[SalesOrderNumber] AS NUMBER
      ,[UnitPrice]
      ,[ExtendedAmount] AS ExtndAmount
      ,[ProductStandardCost] AS standardCost
      ,[TotalProductCost] AS ProductCost
      ,[SalesAmount] AS Amount
      ,[TaxAmt] AS Tax
      ,[Freight]
  FROM [Conditional Split 2]
Table 14

接下来,在 [Conditional Split 3] 表中查看结果。然后,打开 Management Studio 并编写下面的语句来检查结果。

-- Conditional Split Result
SELECT [EnglishProductName] AS NAME
,[Color]
,[SalesOrderNumber] AS NUMBER
,[UnitPrice]
,[ExtendedAmount] AS ExtndAmount
,[ProductStandardCost] AS standardCost
,[TotalProductCost] AS ProductCost
,[SalesAmount] AS Amount
,[TaxAmt] AS Tax
,[Freight]
FROM [Conditional Split 3]
Output Table 15

评论已关闭。