数据清除包示例

更新日期: 2005 年 12 月 5 日

数据清除示例是一个清除数据的包。该包使用的数据是代表潜在客户的姓名和地址列表。这些数据需要清除,其中包含拼写错误、缺少信息以及包含数据库中已有的客户、不正确的客户或同一客户的多个稍有不同的实例。

该包控制流由两个任务组成。第一个任务是一个执行 SQL 任务,创建一个输入表 CustomerLeads 和三个名为 ExistingCustomerLeadsNewCustomerLeadsDuplicateCustomerLeads 的输出表。第二个任务是一个“数据流”数据流,清除从 CustomerLeads 表中提取的数据。该数据流标识出唯一的新客户、现有客户和重复客户,并将属于每种客户类型的行写入相应输出表中。

如果在非英语版本的 Windows 上运行该示例,则可能需要替换 Program Files 文件夹的本地化名称,才能打开或运行该示例。

ms160742.note(zh-cn,SQL.90).gif注意:
此示例使用只有企业版的 SQL Server 2005 中才有的模糊分组和模糊查找转换功能。
ms160742.note(zh-cn,SQL.90).gif重要提示:
提供的示例仅供学习使用。这些示例不是针对生产环境设计的,也没有在生产环境中进行测试。对于这些示例,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. 右键单击通道,然后单击**“数据查看器”**。

  2. 在数据流通道编辑器中,单击**“添加”**。

  3. 在**“配置数据查看器”对话框的类型列表中,单击“网格”**。默认情况下,所有列均显示在数据查看器中。

  4. 为其他通道重复步骤 1-3。

运行示例

可以使用 dtexec 实用工具从命令行运行包,或在 Business Intelligence Development Studio 中运行包。

如果您使用的是非英语版本的 Windows,则可能需要更新包中使用的所有文件连接管理器的 ConnectionString 属性,才能成功地运行示例包。请验证在您的计算机上连接管理器所用的路径是否为有效路径。如果需要,可以修改此路径以便使用 Program Files 文件夹的本地化名称。

对于此示例,可能必须更新 CreateTables.sql 连接管理器的 ConnectionString 属性中的“Program Files”。

使用 dtexec 运行包

  1. 打开命令提示符窗口。

  2. 将目录更改为 C:\Program Files\Microsoft SQL Server\90\DTS\Binn,即 dtexec 所在的位置。

  3. 键入下列命令:

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
    
  4. Enter

有关如何使用 dtexec 实用工具运行包的详细信息,请参阅 SQL Server 2005 联机丛书中的“dtexec 实用工具”主题。

在 Business Intelligence Development Studio 中运行包

  1. 打开 Business Intelligence Development Studio。

  2. 在**“文件”菜单上,指向“打开”,然后单击“项目/解决方案”**。

  3. 找到 DataCleaning Sample 文件夹,然后双击名为 DataCleaning.sln 的文件。

  4. 解决方案资源管理器中,右键单击 SSIS Packages 文件夹中的 DataCleaning.dtsx,再单击**“执行包”**。

ms160742.note(zh-cn,SQL.90).gif注意:
如果在 SSIS 设计器中打开包并查看包属性,您将发现 DelayValidation 属性设置为 True。必须推迟对包进行验证,因为直到第一次运行数据清除示例包后,才会创建该包使用的表:CustomerLeads 以及三个名为 ExistingCustomerLeadsNewCustomerLeadsDuplicateCustomerLeads 的输出表。如果将 DelayValidation 设置为 False,则在运行该包前在 SSIS 设计器中打开该包时,会发生验证错误。

示例中的组件

下表列出了示例中使用的任务、容器、数据源和目标以及转换。

元素 用途

执行 SQL 任务

执行 SQL 任务包括创建客户地址引用表视图、填充 NewCustomer 输入表及创建输出表。此任务创建一个输入表 CustomerLeads,另外还创建三个名为 ExistingCustomerLeadsNewCustomerLeadsDuplicateCustomerLeads 的输出表。

数据流任务

数据流任务(模糊查找数据流任务)执行包中的数据流。

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 日

更改的内容:
  • 更正了要在可返回执行结果的 SELECT 语句中使用的架构名称。