Surajit Chaudhuri, Kris Ganjam, Venky Ganti, Vivek Narasayya, and Theodore Vassilakis
注 本文所指的是 SQL Server?2005 Beta 2 版,在最终版本之前内容可能会更改。
简介
由于拼写错误、截断、缺少或插入的标记、空字段、意外的缩略语和其他不规则问题,实际的数据是“有问题”的。 因此,在数据仓库项目中,很大一部分的时间和金钱都花费在了提取、转换和加载 (ETL) 阶段。 在 ETL 阶段,新数据被清理、标准化,并使其与现有数据一致。 在 Microsoft SQL Server?2005 中可用的模糊查找和模糊分组转换,有助于使 ETL 过程在遇到若干种在实际数据中观测到的常见错误时更易复原。 它们解决一般的匹配和分组问题,而无需特定于域的规则和脚本的专家集合。 通过为您的域自定义模糊查找和模糊分组,您可以利用数据转换服务 (Data Transformation Services,DTS) 设计器内的通用数据清理算法,并避免创建复杂的自定义规则和代码。
模糊查找使得您能够将输入记录与引用表中的无错的、标准化的记录匹配。 匹配过程对于在输入记录中存在的错误有复原功能。模糊查找返回最相近的匹配并指出匹配的质量。 例如,由于输入数据中的录入错误或其他错误,在一次新的销售交易中输入的客户信息(名称和地址)可能与包含所有当前客户的客户引用表中的任何记录都不完全匹配。即使不存在完全匹配,模糊查找也会从客户引用表返回最佳匹配记录,并提供度量值以表明匹配质量。
模糊分组使您能够标识一个表中的记录的组 — 在这个表中每个组都可能对应相同的实际实体。 分组对在实际数据中观测到的常见错误有复原功能,因为每组中的记录可能彼此不相同但彼此很相似。 例如,对于将一个客户引用表中描述每个实际客户的所有记录归类到一起,模糊分组是很有用的。
模糊查找和模糊分组为复杂的、常遇到的数据清理问题提供易用的解决方案。 尽管它们与现有的诸如 soundex、基于规则的系统、基于编辑距离的系统及全文搜索等现有方法有一些联系,但是模糊查找和模糊分组有一些优势:
| • |
模糊查找和模糊分组使用一个自定义的、考虑编辑距离(例如,“hits”与“bit”的距离为 2)、标记数、标记顺序以及相对频率的独立于域的距离函数。 结果,与全文搜索相比,模糊查找和模糊分组获得的辨别力要精细得多,因为它们捕获了更详细的数据结构。
|
| • |
由于它们完全是标记驱动的,模糊查找和模糊分组不像 soundex 那样有依赖于语言的组件。
|
| • |
因为它们不只使用编辑距离,模糊查找和模糊分组不容易被变换误导,而且与只使用编辑距离的方法相比,能够检测出更高级的模式。
|
| • |
模糊查找和模糊分组紧密集成在 DTS 中,这使它们对 SQL Server 2005 的 ETL 任务来说易于使用,而且无需或只需很少的自定义编程。
|
下面的部分提供了使用并了解模糊查找和模糊分组的分步指南,并且包括了这些转换的一些实现和性能方面的内容,这对用户来说很有用。 本文意在通过更详细地解释模糊查找和模糊分组的某些方面来补充在线书籍。 有关更多关于选项和配置参数方面的信息,请参阅在线书籍项。 这些项包括的信息有:列宽、层次结构、标记处理选项以及其他有用的参数,这些参数提供一些方法,以加入可用来提高某些方案的准确性的域知识。
最有效地使用模糊分组
与模糊查找相比,模糊分组需要调整的外部参数较少,不过,了解它的一些内部机制会帮助您获得最佳性能。模糊分组在后台使用模糊查找来执行分组。 例如,模糊分组将其标记化的字符串原封不动地传递给模糊查找。 在运行时,模糊分组依据输入数据使用模糊查找创建一个临时 ETI,并用其确定哪些输入行是彼此相近的。模糊分组检查每个输入行,并对数据执行多种模糊查找查询,同时自适应地设置 MinSimilarity 阀值。 依据得回的结果数,由它生成组。
正如使用模糊查找,模糊分组要求您设置 MinSimilarity 阀值。 只有元组彼此的相似性高于在 UI 中设置的阀值时,它们才会被分组,记住这一点是很重要的。 因此,如果您用一个低阀值运行模糊分组并发现很不近似的元组被分组到一起,那么就提高相似性设置。模糊分组将每个元组的相似性报告给该组的代表元组。 代表元组的选择是无法影响的。 如果您想要拆分一个组,将所需的相似性设置为高于报告数。 如果被分组的元组过少,您可以对相似性值执行一个二进制搜索,以确定为对某些元组进行分组,将相似性阀值设置为多低合适。 例如,如果设置为 0.9 导致组太少,而 0.7 导致组太多,那么试一下 0.8。
注 是无法强制模糊分组对两个元组分组的。 即使将相似性设置为零也不一定会返回带有所有元组的一个单个组。 因为组的质量极大地取决于您的数据的特定语义,所以试验是找出您的应用程序的正确设置的唯一方法。
您还可以尝试使用模糊查找为您的输入数据创建一个 ETI,并通过使用一个大值以返回该数量的匹配和高阀值以达到所需的相似性,来查找特定的行。 不过,模糊分组合并了以下两项内容:将元组适当地归类为多个重复项的集合的附加智能及使代表规范化的建议。