SSIS 中的多播转换

SSIS 中的多播转换将输入数据发送到多个目标路径,而不应用任何条件或转换。 或者,多播转换接收一个输入,逻辑复制数据,并将相同的数据传递给多个输出。

SSIS 多播转换在并行应用相同数据集上的不同转换时非常有用。它的主要功能是执行并行处理。例如,如果我们要在相同的数据集上执行两种类型的转换。那么,使用多播转换来并行复制相同数据的两份。接下来,我们可以对每个副本执行不同的转换,或将它们加载到不同的目标。

SSIS 多播转换示例

在此示例中,我们使用 SSIS 多播转换将 OLE DB 源数据(来自 Dimcustomers 和 Fact internet sales 表)通过 Excel 目标和平面文件目标发送到多个目标,例如 Excel 文件和文本文件。

步骤 1:将数据流任务从工具箱拖放到控制流,并将其重命名为多播转换。

双击数据流任务,这将打开数据流选项卡。

步骤 2:将 OLE DB 源、多播转换从 SSIS 工具箱拖放到数据流区域

Multicast Transformation in SSIS 2

步骤 3:双击数据流区域中的 OLEDB 源,打开连接管理器设置,并为我们编写 SQL 语句提供空间。有关更多转换,请 >> 单击此处

OLE DB Source Editor 3

我们在上面的屏幕截图中使用的 SQL 命令是

SELECT Color, 
       EnglishProductName, 
       ListPrice, 
       DealerPrice,
       EnglishDescription, 
       Fact.SalesAmount
FROM DimProduct
   INNER JOIN
     FactInternetSales AS Fact 
   ON DimProduct.ProductKey = Fact.ProductKey

对于这个 SSIS 多播转换示例,我们从 DimProduct 表中选择颜色、英文产品名称、标价、经销商价和英文描述,以及 [Adventure Works DW 2014] 中提供的 Fact Internet Sales 表中的销售额列。

步骤 4:点击 OLE DB 源列选项卡以验证列。在此选项卡中,我们也可以取消选中不需要的列。

Check Available External Columns 4

步骤 5:点击 OK 按钮。接下来,将箭头向下拖动并附加到多播。SSIS 多播转换没有什么需要做的,因为它只会将数据传输到多个输出。请将 Excel 目标拖放到数据流区域。

Multicast Transformation in SSIS 5

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

Multicast Transformation in SSIS 6

在这里,我们选择 DimProducts.xls 作为我们的 Excel 目标工作表。

提示:在使用 Excel 连接管理器之前,必须先创建 Excel 工作表。如果勾选“第一行包含列名”选项,列名将保存在所选 Excel 工作表的第一行。

Excel Destination Editor 7

在这里,我们选择了 Product_Destination 表,因此要查看结果,您必须在 DimProducts.xls 中打开 Product_Destination 工作表。

步骤 7:配置表后,点击映射选项卡以检查源列是否与目标列精确映射。

mapping Input and output Columns 8

点击 ok 完成 Excel 目标配置。

步骤 8:拖放平面文件目标并连接到 SSIS 多播转换。现在,我们需要提供平面文件连接管理器和目标的名称。因此,双击平面文件目标并提供所需的信息。

步骤 9:点击映射选项卡以检查它们是否与目标列精确映射。

Multicast Transformation 10

点击 ok 完成 SSIS 多播转换包设置并运行包。

Multicast Transformation 11

在 Excel 工作表中检查多播结果。

Excel Destination File 12

在文本文件中检查多播转换结果。

Destination Text File 13