SSIS高级转换任务—模糊分组

简介:    在模糊查找中我们提到脏数据是怎样进入到表中的事情,主要还是由于一些“Lazy-add”造成的。这种情况我们的肉眼很容易被欺骗,看上去是同一个单词,其实就差那么一个字母,变成了两个不同的单词。一个简单的例子是X-Ray Tech和xRey,我们很有可能认为他们是同一个职务,CT操作员,但是如果让计算机来处理的话,它们是两种截然不同的东西。

  

在模糊查找中我们提到脏数据是怎样进入到表中的事情,主要还是由于一些“Lazy-add”造成的。这种情况我们的肉眼很容易被欺骗,看上去是同一个单词,其实就差那么一个字母,变成了两个不同的单词。一个简单的例子是X-Ray Tech和xRey,我们很有可能认为他们是同一个职务,CT操作员,但是如果让计算机来处理的话,它们是两种截然不同的东西。

  

和模糊查找一样,模糊分组可以查找出多行中出现的类似的单词进行归类。我们可以使用这些归类得到的结果清洗数据源或者在不修改基础数据的情况下对原表进行修改。模糊分组也需要一个输入字符流,还需要一个OLE DB数据连接,用于存放分析得到的结果。

模糊分组任务的编辑界面有下面三个标签

  • 连接管理:这个标签用来设置OLE DB连接,在这个连接的数据库中存放分组结果,这个标签和前面提到的是一样的效果
  • 列:这个标签显示输入流中的列,在这里需要选择一些需要进行模糊分组的列,如图1。每一个被选中的列将会被分析,产生一些新的结果列。如果没有选择的话,这些列将会被标记为PassThrow列,意思是不进行模糊分组,直接将导出到输出流中。在这里也可以根据自己的意愿修改Group Output Alias,Output Alias,CleanMatch和Similarity Alias的名字。Numerals选项,如图2,这个选项有前导,后导,前导和后导,不用前导后导,四个选项。在对类似地址的一些数据进行模糊分组的时候这个选项会很有用。最后有一个Comparison flags选项可以设置忽略大小写,忽略符号等设置。
    img_60a6e06ec4cf6c5d270a655a9074343f.png
    图1
    img_517085dc282540bc1174249d22e15cb2.png
    图2
      
  • 高级:这个标签选项中可以设置与模糊分组算法有关的选项。在这里可以修改将要派生的三个列的列名,默认情况下它们分别是“_key_out”,“_key_in”,“_score”。下面的Similarity threshold可以控制相似度,默认的值是0.5。分隔符选项中可以设置忽略输入字符流中的“.”或空字符等,默认情况下会忽略所有常见字符。如图3。
    img_f89df1757b7419c532d55cee1912ef91.png
    图3

  

下面我们做一个例子来说明模糊分组的用法。假设人事部门在输入每个员工的职位信息的时候会有一些笔误,这里我们使用模糊分组来得到最标准的职位名称和每个员工的职位和这个标准的名称的相似度。

  1. 创建一个package命名为FuzzlyGroupExample.dtsx,在Control Flow界面中拖放一个Data Flow任务,双击进入Data Flow界面
  2. 下载下面的txt文件,命名为empdata.txt,存放在一个本地路径里。下载文件
  3. 3. 添加一个平面文件连接,命名为EmployeeData,连接上面创建的txt文件。设置Format属性为Ragged Right,设置第一行为列名,点击列边界分别在第5个字符和第28个字符处点击放置两个分割线如图4。点击高级标签设置TITLE的OutputColumnWidth为50,保存连接。
    img_f6b503f3feef9a84769605c01a6f5323.png
    图4
  4. 添加一个在Data Flow中拖放一个平面文件数据源,连接路径设置为上述文件。添加一个OLE DB数据目的。
  5. 打开OLE DB数据目的,创建一个连接,连接本地AdventureWorkers数据库。
  6. 添加一个模糊分组任务,作为平面文件数据源和OLE DB数据目的的中间任务连接起来。
  7. 如上图1,选择TITLE列作为输入列,其他选项默认。
  8. 在高级标签界面中,选择相似度为默认0.5,这里都默认设置选项。
  9. 打开OLE DB数据目的,点击Name of Table or View,创建一个新的表,命名为[FuzzyGrouping],点击Mapping标签,保留默认设置。
  10. 在模糊分组任务和数据目的之间添加一个DataViewer,选择类型为grid。运行这个package,DataViewer如图5。 最后运行解雇如图6。
    img_8d73cb5c95b41ad31b00d290df479f14.png
    图5
    img_c0e69834b15953fdbc00473dc6891a66.png
    图6

  

最后我们查看结果EXECUTIVE VICE PRESIDEN,EXEC VP, FLDS OPS MGR , FIELDS OPERATIONS MANAG, X-RAY TECH被认为是标准数据,其他数据和他们做模糊比较。如图7。

img_d3ed783bd69400b25463438465fc9e81.png
图7

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
5月前
|
分布式计算 BI MaxCompute
SQL 能力问题之输出聚合的维度列的名称,如何解决
SQL 能力问题之输出聚合的维度列的名称,如何解决
|
7月前
行为关系支持配置码表:让标签加工与理解更直观!
该功能解决了在行为分析和标签处理中,编码字段理解困难的问题。它允许标签开发人员在配置行为关系时直接关联码表,便于识别字段含义,同时,也让业务人员在查看标签时能直接看到真实含义,提高工作效率。此更新简化了工作流程,提升了标签资产的理解度。
行为关系支持配置码表:让标签加工与理解更直观!
|
7月前
|
数据采集 数据挖掘 数据格式
探讨 DataFrame 的高级功能,如数据清洗、转换和分组操作
【5月更文挑战第19天】本文探讨了DataFrame的高级功能,包括数据清洗、转换和分组操作。在数据清洗时,使用fillna处理缺失值,设定阈值或统计方法处理异常值。数据转换涉及标准化和编码,如将分类数据转为数值。分组操作用于按特定列聚合计算,支持多级分组和自定义聚合函数。掌握这些技能能有效处理和分析数据,为决策提供支持。
91 2
|
XML 数据格式
FastReport自动提取表的逻辑
FastReport自动提取表的逻辑
|
自然语言处理 Java
如何使用ES更有效率的进行多字段模糊匹配
如何使用ES更有效率的进行多字段模糊匹配
|
Oracle 关系型数据库 数据库
ETL(六):筛选器转换组件的使用(一)
ETL(六):筛选器转换组件的使用(一)
ETL(六):筛选器转换组件的使用(一)