模糊查找转换与查找转换之间的不同之处在于:它使用了模糊匹配。查找转换使用同等连接在引用表中查找匹配记录。它返回引用表中完全匹配的项。或者不返回任何内容。与此相比,模糊查找转换使用模糊匹配返回引用表中一个或多个接近的匹配项。
模糊查找转换的引用数据源必须是sql2000或更高版本的数据库。而且在模糊匹配中,只能使用具有DT_WSTR和DT_STR数据类型做为输入列。完全匹配可以适用除DT_TEXT、DT_NTEXT和DT_IMAGE之外的所有数据类型,模糊查找转换的编辑框中有三个选项卡。我们现在就逐一介绍
1.引用表选项卡
属性 |
说明 |
OLEDB连接管理器 |
使用列表框选择现有的 OLE DB 连接管理器,或使用“新建”按钮创建新的连接 |
生成新索引 |
指定转换时应创建新的索引以用于查找 |
引用表的名称 |
在数据库中选择要作为引用的表 |
存储新索引 |
如果希望保存新的查找索引,请选择此项 |
新索引名称 |
如果已选择存储新索引选项,则可以对此项设置名称 |
维护存储的索引 |
如果已选择存储新索引选项,则可以对此项进行选择 |
使用现有索引 |
指定转换时使用现有索引来执行查找 |
现有索引名称 |
从数据库中选择要做为引用的表 |
2. 列选项卡
属性 |
说明 |
可用输入列 |
拖动输入列以将其连接到可用查找列。这些列必须具有所支持的相互匹配的数据类型。选择一个映射行,再右键单击可在创建关系对话框中编辑该映射 |
名称 |
查看可用输列的名称 |
传递 |
指定是否在转换的输出中包含输入列 |
可用查找列 |
使用这些复选框可以选择要对其执行模糊查找操作的列。 |
查找列 |
从引用表的可用列的列表中选择查找列。通过选中“可用查找列”表中的相应复选框即可选择查找列。选择“可用查找列”表中的某个列将创建一个输出列,其中包含返回的对应于每个匹配行的引用表列值。 |
输出别名 |
为每个查找列的输出键入一个别名。默认值为查找列的名称,并追加一个数字索引值;不过,您也可以任选一个唯一的描述性名称。 |
3. 高级选选卡
属性 |
说明 |
每次查找输出的最大匹配数 |
指定为每个输入行返回的最大匹配转换数。默认值为 1.如果设置大于1的值,则对于每次查找,转换的输出可能包括多行,而且其中一些行可能是重复的。 |
相似性阈值 |
使用滑块在组件级别设置相似性阈值。该值越接近 1,查找值与源值的相似性必须越接近,才能视为匹配。由于需要考虑的候选记录更少,因此增加阈值可以提高匹配的速度。 |
标记分割符 |
指定转换用来对列值进行词汇切分的分隔符。 |
接下来我们将一个例子介绍模糊查找转换的使用方式。我们利用上一章节中提供的txt文本做为数据源。
1.在AdventureWorks数据库中使用下面T-SQL语句创建一张表2.创建一个名为“FuzzyLookupDemo”的包,然后拖放一个Data Flow Task到控制流中。在连接管理器界面创建一个名为“EmployData”的平面文件联接器,连接” E:\BI资料\IntegrationServices\EmpolyData.txt”
3.在常规选项卡中设置格式属性为右边未对齐(Ragged Right),代码页属性设置为1252(ANSI-拉丁语I)。其他设置参考如下图:
4.在列选项卡中点击列边界分别在第5个字符和第28个字符处点击放置两个分割线如图。
5.点击高级标签设置TITLE的OutputColumnWidth为50,保存连接。
6.在数据流选项卡中拖放一个平面文件数据源。平面文件连接器属性设置为EmployData。
7.拖放一个模糊查找转换任务。并将于平面文件源连接,箭头指向模糊转换任务。
8.在模糊查找转换任务中的引用选项卡中连接管理器属性中单击新建按钮。创建一个OLE DB连接管理器。用于连接AdventureWorks数据库。其他的设置参考如下图
9.在高级选项中,相似性阈值设置为0.5,其他都是默认。如下图设置
10.列选项卡和高级选项卡中的属性设置依次参考下面的两个图:
11.拖放一个OLE DB目标源,设置OLE DB连接管理器为刚才创建的数据库连接器。数据访问模式设置为表或试图-快速加载、单击新建,弹出对话框
对框中的sql脚本做如下设置:
然后单击确定。
12.单击映射选项卡做如下设置。
13.执行包。成功后如下图:
14.可以在AdventureWorks数据库中查看结果: