数据清除包示例
更新日期: 2005 年 12 月 5 日
数据清除示例是一个清除数据的包。该包使用的数据是代表潜在客户的姓名和地址列表。这些数据需要清除,其中包含拼写错误、缺少信息以及包含数据库中已有的客户、不正确的客户或同一客户的多个稍有不同的实例。
该包控制流由两个任务组成。第一个任务是一个执行 SQL 任务,创建一个输入表 CustomerLeads 和三个名为 ExistingCustomerLeads、NewCustomerLeads 和 DuplicateCustomerLeads 的输出表。第二个任务是一个“数据流”数据流,清除从 CustomerLeads 表中提取的数据。该数据流标识出唯一的新客户、现有客户和重复客户,并将属于每种客户类型的行写入相应输出表中。
如果在非英语版本的 Windows 上运行该示例,则可能需要替换 Program Files 文件夹的本地化名称,才能打开或运行该示例。
注意: |
---|
此示例使用只有企业版的 SQL Server 2005 中才有的模糊分组和模糊查找转换功能。 |
重要提示: |
---|
提供的示例仅供学习使用。这些示例不是针对生产环境设计的,也没有在生产环境中进行测试。对于这些示例,Microsoft 不提供相关的技术支持。 |
若要了解有关数据清除的详细信息,请在 https://msdn.microsoft.com/library 上的 MSDN Library 中搜索以下文章。
- 包含 SQL Server Integration Services 的数据清除应用程序 (Windows Media Video)
- 使用模糊分组和模糊查找转换的数据清除(白皮书)
要求
运行此示例包具有以下要求:
- 您必须安装了 AdventureWorks 数据库并对其具有管理权限。
- 如果仅需要从命令行运行示例包,则必须安装 SQL Server 2005 Integration Services (SSIS)。
- 若要在 SSIS 设计器中打开包并运行示例包,则必须安装 Business Intelligence Development Studio。
有关如何安装示例的详细信息,请参阅 SQL Server 联机丛书中的“Installing Sample Integration Services Packages”。若要获取示例的最新版本,包括自从最初发布 SQL Server 2005 以来发布的新示例,请参阅 SQL Server 2005 示例和示例数据库(2006 年 4 月)。
示例包的位置
如果示例安装在默认安装位置,则数据清除包位于以下文件夹中:
C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\DataCleaning Sample\Data Cleaning\。
运行此示例包需要下列文件:
文件 | 说明 |
---|---|
DataCleaning.dtsx |
示例包。 |
CreateTables.sql |
要创建表的 SQL 语句。 |
向该示例添加数据查看器
为了更好地了解数据清除包的工作方式,可以向数据流中添加数据查看器,然后查看在数据流组件之间移动的数据。建议将数据查看器添加到下列通道:
- 从 Union All 到**“OLE DB 目标 - 现有客户”**
- 从**“依据组的规范记录的条件性拆分”到“OLE DB 目标 - 唯一客户线索”**
- 从**“依据组的规范记录的条件性拆分”到“OLE DB 目标 - 重复客户线索”**
添加数据查看器
右键单击通道,然后单击**“数据查看器”**。
在数据流通道编辑器中,单击**“添加”**。
在**“配置数据查看器”对话框的类型列表中,单击“网格”**。默认情况下,所有列均显示在数据查看器中。
为其他通道重复步骤 1-3。
运行示例
可以使用 dtexec 实用工具从命令行运行包,或在 Business Intelligence Development Studio 中运行包。
如果您使用的是非英语版本的 Windows,则可能需要更新包中使用的所有文件连接管理器的 ConnectionString 属性,才能成功地运行示例包。请验证在您的计算机上连接管理器所用的路径是否为有效路径。如果需要,可以修改此路径以便使用 Program Files 文件夹的本地化名称。
对于此示例,可能必须更新 CreateTables.sql 连接管理器的 ConnectionString 属性中的“Program Files”。
使用 dtexec 运行包
打开命令提示符窗口。
将目录更改为 C:\Program Files\Microsoft SQL Server\90\DTS\Binn,即 dtexec 所在的位置。
键入下列命令:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
按 Enter。
有关如何使用 dtexec 实用工具运行包的详细信息,请参阅 SQL Server 2005 联机丛书中的“dtexec 实用工具”主题。
在 Business Intelligence Development Studio 中运行包
打开 Business Intelligence Development Studio。
在**“文件”菜单上,指向“打开”,然后单击“项目/解决方案”**。
找到 DataCleaning Sample 文件夹,然后双击名为 DataCleaning.sln 的文件。
在解决方案资源管理器中,右键单击 SSIS Packages 文件夹中的 DataCleaning.dtsx,再单击**“执行包”**。
注意: |
---|
如果在 SSIS 设计器中打开包并查看包属性,您将发现 DelayValidation 属性设置为 True。必须推迟对包进行验证,因为直到第一次运行数据清除示例包后,才会创建该包使用的表:CustomerLeads 以及三个名为 ExistingCustomerLeads、NewCustomerLeads 和 DuplicateCustomerLeads 的输出表。如果将 DelayValidation 设置为 False,则在运行该包前在 SSIS 设计器中打开该包时,会发生验证错误。 |
示例中的组件
下表列出了示例中使用的任务、容器、数据源和目标以及转换。
元素 | 用途 |
---|---|
执行 SQL 任务 |
执行 SQL 任务包括创建客户地址引用表视图、填充 NewCustomer 输入表及创建输出表。此任务创建一个输入表 CustomerLeads,另外还创建三个名为 ExistingCustomerLeads、NewCustomerLeads 和 DuplicateCustomerLeads 的输出表。 |
数据流任务 |
数据流任务(模糊查找数据流任务)执行包中的数据流。 |
OLE DB 源 |
OLE DB 源(OLE DB 源 - 客户线索)从 CustomerLeads 表中读取记录。 |
查找转换 |
查找转换(查找现有客户)执行完全查找来标识出现有的客户。如果查找成功,则将记录插入 ExistingCustomerLeads 表中。 |
派生列转换 |
派生列转换(派生列)向每行添加 _Similarity 列,并将列值设置为 1。 |
模糊查找转换 |
模糊查找转换(模糊查找现有客户)执行模糊查找来识别出与现有客户记录模糊匹配的客户记录。 该转换将向每行添加包含相似性得分的 _Similarity 列。得分 0.0 意味着没有找到匹配项,而 1.0 意味着找到完全匹配项。0.0 到 1.0 之间的得分表示的是对相似性的度量,值越接近 1.0 表示相似性越大。 |
条件性拆分转换 |
第一个条件性拆分转换(依据 _Similarity 的条件性拆分)根据模糊查找确定的相似性得分将输入行定向至两个输出之一。相似性得分 >= .70 的行写入 ExistingCustomerLeads 表。相似性得分 < 70 的行可能是有效的新客户线索,这些行将在以后清除。 第二个条件性拆分转换(依据组的规范记录的条件性拆分)根据数据行是否重复将输入行定向至两个输出之一。如果 _key_in 列的值和 _key_out 列的值相等,则将该行用作组中的规范行,并将该规范行插入 NewCustomerLeads 表。如果 _key_in 列和 _key_out 列的值不相等,则将该行视为模糊重复行,并将该行插入 DuplicateCustomerLeads 表。 |
Union All 转换 |
Union All 转换 (Union All) 将现有客户行(完全匹配和模糊匹配)合并到一个数据集中。 |
模糊分组转换 |
模糊分组转换(模糊分组)对可能重复的客户进行分组。该转换向每行添加三列(_key_in、_key_out 和 _score)。_key_in 是分配给每个输入行的唯一标识符;_key_out 包含分配给某一行(此行能最好地表示模糊组中的所有行)的特定 _key_in。模糊组中的所有行都具有相同的 _key_out 值。_score 列的值介于 0.0 到 1.0 之间,表示给定的输入行和选为规范值的行之间的文本相似性。 |
OLE DB 目标 |
OLE DB 目标(OLE DB 目标 - 现有客户)将行插入 ExistingCustomerLeads 表中。 OLE DB 目标(OLE DB 目标 - 唯一客户线索)将行插入 NewCustomerLeads 表中。 OLE DB 目标(OLE DB 目标 - 重复客户线索)将行插入 DuplicateCustomerLeads 表中。 |
文件连接管理器 |
文件连接管理器 (CreateTables.sql) 连接到包含包使用的 SQL 的文件。 |
OLE DB 连接管理器 |
OLE DB 连接管理器 (local).AdventureWorks,连接到本地服务器上的 AdventureWorks 数据库。 |
下表说明了输出表中的数据。
表 | 说明 |
---|---|
ExistingCustomerLeads |
包含与现有客户完全匹配的记录,以及与现有客户模糊匹配且文本相似性非常高的记录。 |
NewCustomerLeads |
包含与现有客户的匹配性不高的记录。如果列表中有多个实例名称相同,或具有某个特殊名称且相似性很高,则只将一个记录定向到 NewCustomerLeads,而其他重复的记录均定向到 DuplicateCustomerLeads。 |
DuplicateCustomerLeads |
包含新客户的重复项。 |
示例结果
若要查看数据清除示例包的执行结果,请运行以下 Transact-SQL 查询:
Select * from AdventureWorks.FuzzyLookupExample.ExistingCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.NewCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.DuplicateCustomerLeads
更改历史记录
发布日期 | 历史记录 |
---|---|
2005 年 12 月 5 日 |
|