SSIS 教程

SSIS 教程:创建简单的 ETL 包

Microsoft Integration Services 是一个可以生成高性能数据集成解决方案(包括为

数据仓库提取、转换和加载 (ETL) 包)的平台。Integration Services 包括用于生成和调式包的图形工具和向导;用于执行工作流函数(如 FTP 操作)、执行 SQL 语句以及发送电子邮件的任务;用于提取和加载数据的数据源和目标;用于清除、聚合、合并和复制数据的转换;用于管理包执行和存储的管理服务,即 Integration Services;

以及用于 Integration Services 对象模型编程的应用程序编程接口 (API)。

在本教程中,您将学习如何使用 SSIS 设计器创建一个简单的 Microsoft SQL

Server Integration Services 包。所创建的包将从平面文件提取数据,重新设置数据的格式,然后将已重新设置格式的数据插入到事实数据表中。在下列课程中,将扩展包以阐释循环、包配置、日志记录和错误流。

在安装教程所用的示例数据的同时,也会安装将在教程的每一课中创建的完整的包版本。使用完整的包,您可以按需要跳过前面几课而从后面的课程开始学习教程。如果您是第一次使用包或新的开发环境,我们建议从第 1 课开始学习。

您将在 SSIS 教程中学到的内容

熟悉 Microsoft SQL Server Integration Services 的新工具、控件和功能的最好方法,就是使用它们。本教程将引导您使用 SSIS 设计器创建一个简单的 ETL 包,其中

包含循环、配置、错误流逻辑和日志记录。

SSIS 教程的要求

本教程适用于熟悉基本数据库操作,但对 SQL Server Integration Services 中的新

功能认识有限的用户。

若要使用本教程,系统中必须安装有下列各项:

?带有AdventureWorksDW数据库的 SQL Server。为了增强安全性,默认情况下不会安装示例数据库。若要安装示例数据库,请参阅安装 SQL Server 示例和示

例数据库的注意事项。

?本教程还需要示例数据。示例数据与示例一起安装。如果无法找到示例数据,请返回以上过程,按说明完成安装。

注意

阅读教程时,建议将“下一个主题”和“上一个主题”按钮添加到文档查看器工具栏中。有关详细信息,请参阅向帮助中添加“上一步”和“下一步”按钮。

本教程假定没有将 SSIS 设计器重新配置为使用控制流元素或数据流元素的自动连接

功能。如果 SSIS 设计器使用自动连接功能,则元素可能会在添加到设计图面时自动进行连接。控制流的自动连接功能还支持将“失败”和“完成”,而不是将“成功”用作默认的约束。如果 SSIS 设计器未使用“成功”作为默认的约束,则应当在执行教程时重置此配置。可以在“选项”对话框的“商业智能设计器”部分中配置自动连接功能,该对话框可通过单击“工具”菜单中的“选项”获得。

本 SSIS 教程中的课程

第 1 课(SSIS 教程):创建项目和基本包

在本课中,将创建一个简单的 ETL 包,从单个平面文件中提取数据,再使用查找转换转换数据,最后将所得结果加载到目标事实数据表中。

第 2 课:添加循环

在本课中,将扩展第 1 课中创建的包,利用新增的循环功能,将多个平面文件提取到单个数据流进程中。

第 3 课:添加包配置

在本课中,将扩展第 2 课中创建的包,利用新增的包配置选项。

第 4 课:添加日志记录

在本课中,将扩展第 3 课中创建的包,利用新增的日志记录功能。

第 5 课:添加错误流重定向

在本课中,将扩展第 4 课中创建的包,以便利用新增的错误输出配置。

第 1 课(SSIS 教程):创建项目和基本包

在本课中,您将创建一个简单 ETL 包,该包可以从单个平面文件源提取数据,使用两个查找转换组件转换该数据,然后将该数据写入AdventureWorksDW中的FactCurrencyRate事实数据表。在本课中,您还将学习如何创建新包、添加和配置数据源和目标连接以及使用新的控制流和数据流组件。

重要提示

本教程需要AdventureWorksDW示例数据库。有关安装和部署AdventureWorksDW的详细信息,请参阅安装 SQL Server 示例和示例数据库的注意事项。

了解包要求

在创建包之前,需要充分了解在源数据和目标数据中使用的格式。了解了这些数据格式后,便可定义将源数据映射到目标数据所需的转换。

查看源

在本教程中,源数据是平面文件 SampleCurrencyData.txt 中包含的一组历史货币数据。源数据具有以下四列:货币的平均汇率、货币键、日期键和收盘汇率。

下面是 SampleCurrencyData.txt 文件中所包含的源数据示例:

1.00010001 ARS 9/3/2001 0:00 0.99960016

1.00010001 ARS 9/4/2001 0:00 1.001001001

1.00020004 ARS 9/5/2001 0:00 0.99990001

1.00020004 ARS 9/6/2001 0:00 1.00040016

1.00050025 ARS 9/7/2001 0:00 0.99990001

1.00050025 ARS 9/8/2001 0:00 1.001001001

1.00050025 ARS 9/9/2001 0:00 1

1.00010001 ARS 9/10/2001 0:00 1.00040016

1.00020004 ARS 9/11/2001 0:00 0.99990001

1.00020004 ARS 9/12/2001 0:00 1.001101211

在使用平面文件源数据时,需要了解平面文件连接管理器如何解释平面文件数据,这一点很重要。如果平面文件源是 Unicode 编码的,则平面文件连接管理将所有列定义为[DT_WSTR],默认列宽为 50。如果平面文件源是 ANSI 编码的,则将列定义为 [DT_STR],默认列宽为 50。您可能必须更改这些默认设置,才能使字符串列类型与所使用的数据

更相符。为此,您需要查看将写入数据的目标的数据类型,然后在平面文件连接管理器中选择正确的类型。

查看目标

源数据的最终目标是AdventureWorksDW中的FactCurrencyRate事实数据表。FactCurrencyRate事实数据表有四列,并且与两个维度表有关系,如下表所示。

列名称数据类型查找表查找列

AverageRate float 无无

CurrencyKey int (FK) DimCurrency CurrencyKey (PK)

TimeKey Int (FK) DimTime TimeKey (PK)

EndOfDayRate float 无无

将源数据映射为与目标兼容

对源数据和目标数据的分析指出需要查找CurrencyKey和TimeKey值。将执行这些查找的转换通过使用DimCurrency和DimTime维度表中的备用键来获取CurrencyKey

和TimeKey值。

平面文件列表名列名称数据类型

0 FactCurrencyRate AverageRate Float

1 DimCurrency CurrencyAlternateKey nchar(3)

2 DimTime FullDateAlternateKey Datetime

3 FactCurrencyRate EndOfDayRate Float

SSIS 教程:课程任务

本课程包含以下任务:

?任务 1:创建新的 Integration Services 项目

?任务 2:添加并配置平面文件连接管理器

?任务 3:添加并配置 OLE DB 连接管理器

?任务 4:将数据流任务添加到包

?任务 5:添加并配置平面文件源

?任务 6:添加并配置查找转换

?任务 7:添加和配置 OLE DB 目标

?任务 8:使 Lesson 1 包更易于理解

?任务 9:测试 Lesson 1 教程包

任务 1:创建新的 Integration Services 项目

在 Integration Services 中创建包的第一步就是创建一个 Integration Services 项目。此项目包含在数据转换解决方案中使用的数据源、数据源视图和包等对象的模板。

将在本 Integration Services 教程中创建的包用于解释受区域设置影响的数据的值。如果您的计算机未配置为使用区域选项“英语(美国)”,则需要在包中设置其他属性。

第 2 课到第 5 课中使用的包是从第 1 课中创建的包复制而来的,因此不需要更新复

制的包中受区域设置影响的属性。

创建新的Integration Services 项目

1.在“开始”菜单上,依次指向“所有程序”和 Microsoft SQL Server,再单击

SQL Server、Business Intelligence Development Studio。

2.在“文件”菜单中,指向“新建”,再单击“项目”,以创建一个新的

Integration Services 项目。

3.在“新建项目”对话框的“模板”窗格中,选择“Integration Services 项目”。

4.在“名称”框中,将默认名称更改为 SSIS Tutorial。或者,清除“创建解决方

案的目录”复选框。

5.接受默认位置,或单击“浏览”,以浏览并找到要使用的文件夹。

6.在“项目位置”对话框中,单击文件夹,再单击“打开”。

7.单击“确定”。

默认情况下,将创建一个名为Package.dtsx的空包,并将该包添加到项目中。

8.在解决方案资源管理器工具栏中,右键单击 Package.dtsx,再单击“重命名”,

将默认包重命名为 Lesson 1.dtsx。

9.当系统提示重命名包对象时,单击“是”。

设置受区域设置影响的属性

1.在“视图”菜单上,单击“属性窗口”。

2.在“属性”窗口中,将 LocaleID 属性设置为“英语(美国)“。

任务 2:添加并配置平面文件连接管理器

在本任务中,将在刚创建的包中添加一个平面文件连接管理器。通过平面文件连接管理器,包可从平面文件中提取数据。使用平面文件连接管理器,可以指定包从平面文件中提取数据时要应用的文件的名称与位置、区域设置与代码页以及文件格式,其中包括列分隔符。另外,还可以为各个列手动指定数据类型;也可以使用“提供列类型建议”对话框,自动将提取出来的数据列映射到 Integration Services 数据类型。

必须为要使用的每种文件格式创建一个新的平面文件连接管理器。因为本教程从多个数据格式完全相同的平面文件提取数据,所以只需为您的包添加和配置一个平面文件连接管理器。

在本教程中,将在平面文件连接管理器中配置以下属性:

?Column names 因为平面文件没有列名,因此平面文件连接管理器将创建默认的列名。这些默认名称不能用于标识每个列代表的内容。若要使这些默认名称更有用,需要将默认名称改为要加载平面文件数据的事实数据表匹配的名称。

?Data mappings 为平面文件连接管理器指定的数据类型映射,将由所有引用该连接管理器的平面文件数据源组件使用。可以使用平面文件连接管理器,或者使用“提供列类型建议”对话框来手动映射数据类型。在本教程中,将查看“提供列类型建议”对话框中建议的映射,然后在“平面文件连接管理器编辑器”对话框中手动设置必要的映射。

平面文件连接管理器提供了有关数据文件的区域设置信息。如果未将您的计算机配置为使用区域设置选项“英语(美国)”,则必须在“平面文件连接管理器编辑器”对话框中设置其他属性。

添加一个平面文件连接管理器

1.右键单击“连接管理器”区域中的任意位置,再单击“新建平面文件连接”。

2.在“平面文件连接管理器编辑器”对话框的“连接管理器名称”字段中,键入

Sample Flat File Source Data。

3.单击“浏览”。

4.在“打开”对话框中,找到示例数据文件夹,再打开 SampleCurrencyData.txt

文件。默认情况下,教程示例数据安装在 c:\Program Files\Microsoft SQL

Server\100\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data 文件夹中。

设置受区域设置影响的属性

1.在“平面文件连接管理器编辑器”对话框中,单击“常规”。

2.将“区域设置”设置为“英语(美国)”,并将“代码页”设置为 1252。

重命名平面文件连接管理器中的列

1.在“平面文件连接管理器编辑器”对话框中,单击“高级”。

2.在“属性”窗格中,进行如下更改:

o将 Column 0 名称属性改为 AverageRate。

o将 Column 1 名称属性改为 CurrencyID。

o将 Column 2 名称属性改为 CurrencyDate。

o将 Column 3 名称属性改为 EndOfDayRate。

注意

默认情况下,所有四个列最初都设置为字符串数据类型 [DT_STR],其

OutputColumnWidth 为 50。

重新映射列数据类型

1.在“平面文件连接管理器编辑器”对话框中,单击“建议类型”。

Integration Services 将根据前 100 行数据自动建议最合适的数据类型。您还

可以将这些建议选项改为增加或减少取样数据,以便指定整数数据或布尔数据的

默认数据类型,或添加作为填充量添加到字符串列中的空格。

现在,请不要对“提供列类型建议”对话框中的选项进行任何更改,单击“确定”

可使 Integration Services 提供列数据类型的建议。这样,您将转到“平面文

件连接管理器编辑器”对话框的“高级”窗格,在此可以查看 Integration

Services 建议使用的列数据类型。(如果单击“取消”,则不对列元数据提供

任何建议,并使用默认字符串 (DT_STR) 数据类型。)

在本教程中,Integration Services 为 SampleCurrencyData.txt 文件中的数

据建议了下表第二列中显示的数据类型。但是,目标中的列要求的数据类型(将

在以后的步骤中定义)显示在下表的最后一列。

平面文件列建议的类型目标列目标类型

AverageRate Float [DT_R4] FactCurrencyRate.AverageRate Float

CurrencyID String [DT_STR] DimCurrency.CurrencyAlternateKey nchar(3)

CurrencyDate Date [DT_DATE] DimTime.FullDateAlternateKey datetime

EndOfDayRate Float [DT_R4] FactCurrencyRate.EndOfDayRate Float

为 CurrencyID 和 CurrencyDate 列建议的数据类型与目标表中的字段的数据

类型不兼容。由于 DimCurrency.CurrencyAlternateKey 的数据类型为 nchar

(3),CurrencyID 必须从字符串类型 [DT_STR] 改为字符串类型 [DT_WSTR]。另

外,字段 DimTime.FullDateAlternateKey 被定义为 DataTime 数据类型,因此

CurrencyDate 需要从日期类型 [DT_Date] 改为数据库时间戳类型

[DT_DBTIMESTAMP]。

2.在“属性”窗格中,将列 CurrencyID 的数据类型从字符串类型 [DT_STR] 改为

Unicode 字符串类型 [DT_WSTR]。

3.在“属性”窗格中,将列 CurrencyDate 的数据类型从日期类型 [DT_DATE] 改

为数据库时间戳类型 [DT_DBTIMESTAMP]。

4.单击“确定”。

任务 3:添加并配置 OLE DB 连接管理器

添加了用于连接到数据源的平面文件连接管理器以后,下一个任务是添加用于连接到目标的 OLE DB 连接管理器。通过 OLE DB 连接管理器,包可以在任何 OLE DB 兼容的数

据源中提取数据或加载数据。使用 OLE DB 连接管理器,可以为连接指定服务器、身份验证方法和默认数据库。

在本课中,将创建使用 Windows 身份验证的 OLE DB 连接管理器,以连接到AdventureWorksDB的本地实例。本教程以后要创建的其他组件(如查找转换和 OLE DB 目标)也将引用此处创建的 OLE DB 连接管理器。

添加和配置OLE DB 连接管理器

1.右键单击连接管理器区域中的任意位置,再单击“新建 OLE DB 连接”。

2.在“配置 OLE DB 连接管理器”对话框中,单击“新建”。

3.在“服务器名称”中,输入 localhost。

将 localhost 指定为服务器名称时,连接管理器将连接到本地计算机上的 SQL Server 的默认实例。若要使用 SQL Server 的远程实例,请将 localhost 替换为要连接到的服务器的名称。

4.在“登录到服务器”组中,确认选择了“使用 Windows 身份验证”。

5.在“连接到数据库”组的“选择或输入数据库名称”框中,键入或选择

AdventureWorksDW。

6.单击“测试连接”,验证指定的连接设置是否有效。

7.单击“确定”。

8.单击“确定”。

9.在“配置 OLE DB 连接管理器”对话框的“数据连接”窗格中,确认选择了

localhost.AdventureWorksDW。

10.单击“确定”。

任务 4:将数据流任务添加到包

为源数据和目标数据创建了连接管理器后,下一个任务是在包中添加一个数据流任务。数据流任务将封装在源和目标之间移动数据的数据流引擎,并提供在移动数据时转换、清除和修改数据的功能。大部分的数据提取、转换和加载 (ETL) 进程均在数据流任务中完成。

注意

SQL Server Integration Services 将数据流从控制流中分隔开来。将数据流从控制流进行分隔是 Integration Services 与 Microsoft SQL Server 2000 Data Transformation Services 的重要区别之一。

添加一个数据流任务

1.单击“控制流”选项卡。

2.在“工具箱”中,展开“控制流项”,并将一个数据流任务拖到“控制流”选项

卡的设计图面上。

3.在“控制流”设计图面中,右键单击新添加的数据流任务,再单击“重命名”,

将名称更改为 Extract Sample Currency Data。

好的做法是为添加到设计图面的所有组件提供唯一的名称。考虑到易用性和可维护性,名称应说明每个组件执行的功能。按照这些命名指南,Integration

Services 包可以进行自我说明。另一个说明包的方法是使用批注。有关批注的详细信息,请参阅在包中使用批注。

4.右键单击“数据流”任务,再单击“属性”,然后在“属性”窗口,确保已将

LocaleID 属性设置为“英语(美国)”。

任务 5:添加并配置平面文件源

在此任务中,将向包中添加一个平面文件源并对其进行配置。平面文件源是一个数据流组件,它使用平面文件连接管理器定义的元数据来指定转换过程要从此平面文件中提取的数据的格式和结构。可以通过使用平面文件连接管理器提供的文件格式定义将平面文件源配置为从单个平面文件提取数据。

对于本教程,您将把平面文件源配置为使用以前创建的 Sample Flat File Source Data 连接管理器。

添加平面文件源组件

1.打开“数据流”设计器,方法是双击 Extract Sample Currency Data 数据流任

务或单击“数据流”选项卡。

2.在“工具箱”中,展开“数据流源”,然后将“平面文件源”拖动到“数据流”

选项卡的设计图面上。

3.在“数据流”设计图面上,右键单击新添加的“平面文件源”,单击“重命名”,

然后将该名称改为 Extract Sample Currency Data。

4.双击此平面文件源,打开“平面文件源编辑器”对话框。

5.在“平面文件连接管理器”框中,键入或选择 Sample Flat File Source Data。

6.单击“列”并验证列名是否正确。

7.单击“确定”。

8.右键单击平面文件源并单击“属性”。

9.在“属性”窗口中,验证是否已将 LocaleID 属性设置为“英语(美国)”。

任务 6:添加并配置查找转换

配置了用于从源文件提取数据的平面文件源后,下一个任务是定义获取CurrencyKey

和TimeKey的值所需的查找转换。查找转换通过将指定输入列中的数据联接到引用数

据集中的列来执行查找。引用数据集可以是现有的表或视图,也可以是新表或 SQL 语句的结果。在本教程中,查找转换使用 OLE DB 连接管理器连接到包含引用数据集的源数据的数据库。

注意

还可以配置查找转换,以连接到包含引用数据集的缓存。有关详细信息,请参阅查找转换。

对于本教程,您将向包中添加以下两个查找转换组件并对其进行配置:

?一个转换是根据平面文件中匹配的CurrencyID列值对DimCurrency维度表的CurrencyKey列中的值执行查找。

?一个转换是根据平面文件中匹配的CurrencyDate列值对DimTime维度表的TimeKey列中的值执行查找。

无论在哪种情况下,查找转换都将使用前面创建的 OLE DB 连接管理器。

添加并配置Lookup Currency Key 转换

1.在“工具箱”中,展开“数据流转换”,然后将“查找”拖动到“数据流”选项

卡的设计图面上。将“查找”直接放置在 Extract Sample Currency Data 源的下面。

2.单击 Extract Sample Currency Data 平面文件源,并将绿色箭头拖动到新添加

的“查找”转换中,以连接这两个组件。

3.在“数据流”设计图面上,单击“查找”转换中的“查找”,然后将该名称更改

为 Lookup Currency Key。

4.双击 Lookup CurrencyKey 转换。

5.在“常规”页上,进行以下选择:

1.选择“完全缓存”。

2.在“连接类型”区域,选择“OLE DB 连接管理器”。

6.在“连接”页上,进行以下选择:

1.在“OLE DB 连接管理器”对话框中,确保显示

localhost.AdventureWorksDW。

2.选择“使用 SQL 查询的结果”,然后键入或复制以下 SQL 语句:

复制

select * from (select * from [dbo].[DimCurrency]) as refTable

where [refTable].[CurrencyAlternateKey] = 'ARS'

OR

[refTable].[CurrencyAlternateKey] = 'AUD'

OR

[refTable].[CurrencyAlternateKey] = 'BRL'

OR

[refTable].[CurrencyAlternateKey] = 'CAD'

OR

[refTable].[CurrencyAlternateKey] = 'CNY'

OR

[refTable].[CurrencyAlternateKey] = 'DEM'

OR

[refTable].[CurrencyAlternateKey] = 'EUR'

OR

[refTable].[CurrencyAlternateKey] = 'FRF'

OR

[refTable].[CurrencyAlternateKey] = 'GBP'

OR

[refTable].[CurrencyAlternateKey] = 'JPY'

OR

[refTable].[CurrencyAlternateKey] = 'MXN'

OR

[refTable].[CurrencyAlternateKey] = 'SAR'

OR

[refTable].[CurrencyAlternateKey] = 'USD'

OR

[refTable].[CurrencyAlternateKey] = 'VEB'

7.在“列”页上,进行以下选择:

1.在“可用输入列”面板中,将 CurrencyID 拖放到“可用查找列”面板的

CurrencyAlternateKey 上。

2.在“可用查找列”列,选中 CurrencyKey 右侧的复选框。

8.单击“确定”返回“数据流”设计图面。

9.右键单击 Lookup Currency Key 转换,再单击“属性”。

10.在“属性”窗口中,验证是否已将 LocaleID 属性设置为“英语(美国)”,将

DefaultCodePage 属性设置为 1252。

添加并配置Lookup DateKey 转换

1.在“工具箱”中,将“查找”拖动到“数据流”设计图面上。将“查找”直接放

置在 Lookup CurrencyKey 转换的下面。

2.单击 Lookup Currency Key 转换,并将绿色箭头拖动到新添加的“查找”转换

中,以连接这两个组件。

3.在“选择输入输出”对话框中,单击“输出”列表框中的“查找匹配输出”,然

后单击“确定”。

4.在“数据流”设计图面上,在新添加的“查找”转换中单击“查找”,然后将名

称更改为 Lookup DateKey。

5.双击 Lookup DateKey 转换。

6.在“常规”页上,选择“部分缓存”。

7.在“连接”页上,进行以下选择:

1.在“OLE DB 连接管理器”对话框中,确保显示

localhost.AdventureWorksDW。

2.在“使用表或视图”框中,键入或选择 [dbo].[DimTime]。

8.在“列”页上,进行以下选择:

1.在“可用输入列”面板中,将 CurrencyDate 拖放到“可用查找列”面板

的 FullDateAlternateKey 上。

2.在“可用查找列”列,选中 TimeKey 右侧的复选框。

9.在“高级”页上,查看缓存选项。

10.单击“确定”返回“数据流”设计图面。

11.双击 Lookup Date Key 转换,再单击“属性”。

12.在“属性”窗口中,验证是否已将 LocaleID 属性设置为“英语(美国)”,将

DefaultCodePage 属性设置为 1252。

任务 7:添加和配置 OLE DB 目标

您的包现在可以从平面文件源提取数据,并将数据转换为与目标兼容的格式。下一个任务是将已转换的数据实际加载到目标。若要加载数据,您必须将 OLE DB 目标添加到数据流。OLE DB 目标可以使用数据库表、视图或 SQL 命令将数据加载到各种 OLE DB 兼容的数据库中。

在此过程中,您将添加和配置 OLE DB 目标以使用以前创建的 OLE DB 连接管理器。添加和配置示例OLE DB 目标

1.在“工具箱”中,展开“数据流目标”,并将“OLE DB 目标”拖到“数据流”

选项卡的设计图面上。将 OLE DB 目标直接放置在“查找日期键”转换的下面。

2.单击“查找日期键”转换,并将绿色箭头拖到新添加的“OLE DB 目标”上,以

便将两个组件连接在一起。

3.在“选择输入输出”对话框中,单击“输出”列表框中的“查找匹配输出”,然

后单击“确定”。

4.在“数据流”设计图面上,在新添加的“OLE DB 目标”组件中单击“OLE DB 目

标”,然后将名称更改为 Sample OLE DB Destination。

5.双击 Sample OLE DB Destination。

6.在“OLE DB 目标编辑器”对话框中,确保已在“OLE DB 连接管理器”框中选中

localhost.AdventureWorksDW。

7.在“表或视图的名称”框中,键入或选择 [dbo].[FactCurrencyRate]。

8.单击“映射”。

9.验证 AverageRate、CurrencyKey、EndOfDayRate 以及 TimeKey 输入列是否已

正确映射到目标列。如果映射了同名列,则说明映射正确。

10.单击“确定”。

11.右键单击 Sample OLE DB Destination 目标,再单击“属性”。

12.在“属性”窗口中,验证是否已将 LocaleID 属性设置为“英语(美国)”,将

DefaultCodePage 属性设置为 1252。

任务 8:使 Lesson 1 包更易于理解

因为您已完成了 Lesson 1 包的配置,所以整理包布局是很必要的。如果控制流和数据流布局中的形状大小不一,或者如果形状未对齐或未进行分组,则可能很难理解包功能。

Business Intelligence Development Studio 提供了可轻松、快速设置包布局格式的工具。格式设置功能包括使形状大小统一,对齐各个形状,并控制形状之间的水平间距和垂直间距。

另一种增进对包功能的了解的方式是添加描述包功能的批注。

在本任务中,您将使用 Business Intelligence Development Studio 中的格式设置功能改善数据流的布局并向数据流中添加批注。

设置数据流布局的格式

1.如果尚未打开 Lesson 1 包,则请在解决方案资源管理器中双击 Lesson 1.dtsx。

2.单击“数据流”选项卡。

3.将游标置于 Extract Sample Currency 转换的右上方,单击并将游标拖过所有

的数据流组件。

现在便已选定所有数据流组件。首先选定的形状(该形状选定的指示符为白色)将确定在设置布局格式时所使用的大小和位置。

4.在“格式”菜单中,指向“使大小相同”,再单击“两者”。

5.选定数据流对象后,在“格式”菜单中,指向“对齐”,再单击“左对齐”。向数据流中添加批注

1.右键单击数据流设计图面背景的任意位置,再单击“添加批注”。

2.在批注框中键入或粘贴以下文本。

数据流从文件中提取数据,在 DimCurrency 表的 CurrencyKey 列中以及

DimTime 表的 TimeKey 列中查阅值,并且将数据写入到 FactCurrencyRate 表。

若要在批注框中使文本换行,请将光标置于要开始新行的位置,然后按 Ctrl 和Enter 键。

如果未将文本添加到批注框,则当您在批注框外部单击时,该文本便会消失。

任务 9:测试 Lesson 1 教程包

在本课中,已经完成了下列任务:

?创建了一个新的 SSIS 项目。

?配置了包连接到源数据和目标数据所需的连接管理器。

?添加了一个数据流,该数据流从平面文件源提取数据,对数据执行必要的查找转换,并为目标配置数据。

包现在已经完成了!该对包进行测试了。

检查包布局

测试包之前,应当确保 Lesson 1 包中的控制流和数据流包含下列关系图中显示的对象。控制流

数据流

运行Lesson 1 教程包

1.在“调试”菜单中,单击“启动调试”。

包将开始运行,结果有 1097 个行被成功添加到AdventureWorksDW中的

FactCurrencyRate事实数据表中。

2.当包运行完毕后,在“调试”菜单中,单击“停止调试”。

第 2 课:添加循环

在第 1 课(SSIS 教程):创建项目和基本包中,创建了从单个平面文件源提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW 示例数据库的FactCurrencyRate事实数据表中。

但是,提取、转换和加载 (ETL) 过程很少使用单个平面文件。典型的 ETL 过程从多个平面文件源提取数据。从多个源提取数据需要采用迭代控制流。Microsoft Integration Services 最可能出现的功能之一是可以方便快捷地向包中添加迭代或循环。

Integration Services 为循环遍历包提供了两种容器类型:Foreach 循环容器和 For 循环容器。Foreach 循环容器使用枚举器执行循环,而 For 循环则通常使用变量表达式。本课使用 Foreach 循环容器。

Foreach 循环容器使包能够对指定枚举器的每个成员重复执行控制流。使用 Foreach 循环容器,可以枚举:

?ADO 记录集行和架构信息

?文件和目录结构

?系统、包和用户变量

?SQL Server 管理对象 (SMO)

在本课中,您将修改在第 1 课中创建的简单 ETL 包,以便利用 Foreach 循环容器。还将设置用户定义的包变量,以便使该教程包能够迭代遍历文件夹中的所有平面文件。如果您尚未完成上一课,则也可以复制本教程中附带的已完成的 Lesson 1 包。

在本课中,将不修改数据流,而只修改控制流。

重要提示

本教程需要AdventureWorksDW示例数据库。有关如何安装和部署AdventureWorksDW 的详细信息,请参阅安装 SQL Server 示例和示例数据库的注意事项。

课程任务

本课程包含以下任务:

?任务 1:复制 Lesson 1 包

?任务 2:添加并配置 Foreach 循环容器

?任务 3:修改平面文件连接管理器

?任务 4:测试 Lesson 2 教程包

任务 1:复制 Lesson 1 包

SQL Server 2008 R2

其他版本

?SQL Server 2008

?SQL Server 2005

此主题尚未评级- 评价此主题

在本任务中,为在第 1 课中创建的 Lesson 1.dtsx 包创建一个副本。如果未完成第 1 课的学习,则可以向项目中添加本教程中附带的已完成的 Lesson 1 包,然后再对其进行复制。您将使用这一新副本来完成第 2 课剩余部分。

创建Lesson 2 包

1.如果 Business Intelligence Development Studio 尚未打开,请单击“开始”,

依次指向“所有程序”和“Microsoft SQL Server”,再单击“Business

Intelligence Development Studio”。

2.在“文件”菜单中,依次单击“打开”、“项目/解决方案”、SSIS Tutorial 文

件夹,然后再次单击“打开”,最后双击 SSIS Tutorial.sln。

3.在解决方案资源管理器中,右键单击 Lesson 1.dtsx,再单击“复制”。

4.在解决方案资源管理器中,右键单击“SSIS 包”,再单击“粘贴”。

默认情况下,复制的包将命名为 Lesson 2.dtsx。

5.在解决方案资源管理器中,双击 Lesson 2.dtsx 打开此包。

6.右键单击“控制流”设计图面背景的任意位置,再单击“属性”。

7.在“属性”窗口中,将 Name 属性更新为 Lesson 2。

8.单击 ID 属性框,然后在列表中,单击“<生成新ID>”。

添加已完成的Lesson 1 包

1.依次打开 Business Intelligence Development Studio 和 SSIS Tutorial 项

目。

2.在解决方案资源管理器中,右键单击“SSIS 包”,再单击“添加现有包”。

3.在“添加现有包的副本”对话框的“包位置”中,选择“文件系统”。

4.单击浏览(…)按钮,导航到 C:\Program Files\Microsoft SQL

Server\100\Samples\Integration Services\Tutorial\ Creating a Simple ETL package\Completed Packages,选择 Lesson 1.dtsx,再单击“打开”。

5.按先前过程中步骤 3-8 中所述,复制并粘贴 Lesson 1 包。

任务 2:添加并配置 Foreach 循环容器

在本任务中,您将添加循环访问平面文件的文件夹的功能,并将第 1 课中使用的同一

数据流转换应用于其中的每个平面文件。实现方法是将 Foreach 循环容器添加到控制流中并进行配置。

所添加的 Foreach 循环容器必须能够连接到该文件夹中的每个平面文件。由于该文件夹中的所有文件都具有相同的格式,因此,Foreach 循环容器可以使用同一平面文件连接管理器来连接其中的每个文件。该容器所使用的平面文件连接管理器与您在第 1 课中创建的平面文件连接管理器相同。

目前,第 1 课中的平面文件连接管理器只连接一个特定的平面文件。若要循环地连接该文件夹中的每个平面文件,必须同时对 Foreach 循环容器和平面文件连接管理器进

行如下配置:

?Foreach 循环容器将该容器的枚举值映射为用户定义的包变量。然后,该容器将使用此用户定义变量来动态修改平面文件连接管理器的 ConnectionString

属性,并循环连接该文件夹中的每个平面文件。

?平面文件连接管理器使用用户定义的变量填充在第 1 课中创建的连接管理器的 ConnectionString 属性,以修改该连接管理器。

本任务中的过程向您显示如何创建和修改 Foreach 循环容器以使用用户定义的包变量,以及如何将数据流任务添加到该循环中。您将了解改平面文件连接管理器,以便在下

一任务中使用用户定义的变量。

在对该包进行这些修改后,当该包运行时,Foreach 循环容器将循环访问示例数据文件夹中的文件集合。每次找到一个与条件相匹配的文件时,Foreach 循环容器都会用文

件名填充用户定义的变量,将用户定义的变量映射到 Sample Currency Data 平面文件连接管理器的 ConnectionString 属性,然后对该文件运行数据流。因此,在 Foreach 循环的每次迭代中,数据流任务都将使用一个不同的平面文件。

注意

由于 Microsoft Integration Services 区分控制流和数据流,因此添加到控制流的任何循环都不需要对数据流进行修改。因此,无需更改在第 1 课中创建的数据流。

添加Foreach 循环容器

1.在 Business Intelligence Development Studio 中,单击“控制流”选项卡。

2.在“工具箱”中,展开“控制流项”,然后将“Foreach 循环容器”拖到“控制

流”选项卡的设计图面上。

3.右键单击新添加的“Foreach 循环容器”,并选择“编辑”。

4.在“Foreach 循环编辑器”对话框的“常规”页中,为“名称”输入 Foreach

File in Folder。单击“确定”。

5.右键单击“Foreach 循环容器”,再单击“属性”,然后在“属性”窗口,确保

已将 LocaleID 属性设置为“英语(美国)”。

为Foreach 循环容器配置枚举器

1.双击文件夹中的 Foreach 文件以重新打开“Foreach 循环编辑器”。

2.单击“集合”。

3.在“集合”页中,选择“F oreach 文件枚举器”。

4.在“枚举器配置”组中,单击“浏览”。

5.在“浏览文件夹”对话框中,找到包含教程示例数据的示例数据文件夹。

默认情况下,教程示例数据安装在以下文件夹中:C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data。

6.在“文件”框中,键入 Currency_*.txt。

将枚举器映射为用户定义的变量

1.单击“变量映射”。

2.在“变量映射”页的“变量”列中,单击空单元格并选择“<新建变量…>”。

3.在“添加变量”对话框中,为“名称”键入 varFileName。

重要提示

变量名称区分大小写。

4.单击“确定”。

5.再次单击“确定”,退出“Foreach 循环编辑器”对话框。

将数据流任务添加到循环中

将 Extract Sample Currency Data 数据流任务拖动到现已重命名为 Foreach File in Folder 的 Foreach 循环容器中。

任务 3:修改平面文件连接管理器

在本任务中,您将修改在第 1 课中创建和配置的平面文件连接管理器。平面文件连接

管理器在最初创建时配置为静态加载单个文件。若要启用平面文件连接管理器以重复

加载文件,您必须修改连接管理器的ConnectionString属性以接受用户定义的变量User:varFileName,该变量包含要在运行时加载的文件的路径。

通过将连接管理器修改为使用用户定义的变量 User::varFileName 的值并填充连接管

理器的ConnectionString属性,连接管理器将能够连接到不同的平面文件。在运行时,Foreach 循环容器的每次迭代都将动态更新 User::varFileName 变量。更新变量时,还会使连接管理器连接到不同的平面文件,并使数据流任务处理其他数据集。

配置平面文件连接管理器以使用连接字符串的变量

1.在“连接管理器”窗格中,右键单击 Sample Flat File Source Data,再选择

“属性”。

2.在“属性”窗口中,针对“表达式”,单击空单元,然后单击省略号按钮“(…)”。

3.在“属性表达式编辑器”对话框的“属性”列中,键入或选择

ConnectionString。

4.在“表达式”列中,单击省略号按钮“(…)”以打开“表达式生成器”对话框。

5.在“表达式生成器”对话框中,展开“变量”节点。

6.将变量 User::varFileName 拖到“表达式”框中。

7.单击“确定”关闭“表达式生成器”对话框。

8.再次单击“确定”关闭“属性表达式编辑器”对话框。

任务 4:测试 Lesson 2 教程包

使用现在配置的 Foreach 循环容器和平面文件连接管理器,Lesson 2 包可以迭代遍历示例数据文件夹中由 14 个平面文件组成的集合。每次找到与指定的文件名条件匹配

的文件名时,Foreach 循环容器都将用该文件名填充用户定义的变量。该变量又会更

新平面文件连接管理器的ConnectionString属性,并与新平面文件建立连接。然后,在连接到文件夹中的下一个文件之前,Foreach 循环容器将对新平面文件中的数据运行未修改的数据流任务。

使用以下过程可以测试已添加到包中的新循环功能。

检查包布局

测试包之前,应当确保 Lesson 2 包中的控制流和数据流包含下列关系图中显示的对象。数据流应与第 1 课中的数据流相同。

控制流

数据流

测试Lesson 2 教程包

1.在“调试”菜单中,单击“启动调试”。

包将运行。可以在“输出”窗口中或单击“进度”选项卡来验证每个循环的状态。例如,可以看到 1097 行从文件 Currency_VEB.txt 添加到目标表中。

2.当包运行完毕后,在“调试”菜单中,单击“停止调试”。

第 3 课:添加包配置

包配置允许您从开发环境的外部设置运行时属性和变量。配置允许您开发灵活且易于部署和分发的包。Microsoft Integration Services 提供以下配置类型:?XML 配置文件

?环境变量

相关文档
最新文档