|
|
1
4
下面是我为几乎相同的堆栈编写的东西(我们需要标准化硬件的制造商名称,并且有各种各样的变化)。这是客户端(确切地说是VB.Net)--并使用Levenshtein距离算法(为获得更好的结果而修改):
|
|
2
2
SSIS(在Sql 2005+Enterprise中)具有 Fuzzy Lookup 它就是为这种数据清理问题而设计的。 除此之外,我只知道特定领域的解决方案,例如 address cleaning ,或一般 string matching techniques . |
|
|
3
2
有许多供应商提供产品来进行这种模式匹配。我会做一些调查和研究 找到一个好的,声誉良好的产品,并放弃国产系统 . 正如你所说,你的产品只是好的,这是企业的普遍需求,我相信有不止一种优秀的产品。即使一个许可证要花费几千美元,它仍然比支付一批开发者在内部工作要便宜。 此外,短语“错综复杂”、“CPU密集型”、“VBA代码”和“Access数据库”同时出现在您的系统描述中,这也是找到好的第三方工具的另一个原因。 编辑:也有可能.NET有一个内置的组件来做这种事情,在这种情况下,你不必为此付费。我仍然偶尔会对.NET提供的工具感到惊讶。 |
|
|
4
2
|
|
|
5
1
Access实际上没有用于此目的的工具。在理想情况下,我会使用SSIS解决方案并使用模糊查找。但是,如果您目前正在使用Access,我认为您的办公室购买SQL Server Enterprise edition的可能性很低。如果你被当前的环境所困扰,你可以尝试一种蛮力的方法。
至于公司名称,您可以尝试匹配名称的前5个字符和地址或电话。您还可以创建一个表,其中包含已知的变体以及它们在数据库中的相关内容,以用于清理将来的文件。因此,如果您的id为100的记录是Acme,Inc.的,那么您可以有这样一个表: idfield名称
100 Acme公司 100 Acme公司 100 Acme有限责任公司 100顶点 如果您在每次查找和修复重复项(使其成为重复数据消除过程的一部分)以及每次能够将名称和地址的第一部分与现有公司匹配时都创建一个条目,那么这将是一个很小的开始,但会随着时间的推移而构建。 我还会看看Torial发布的函数,看看它是否有用。 所有这些都将是痛苦和耗时的,但随着时间的推移,当您发现新的变体并将其添加到代码或列表中时,情况会变得更好。如果您确实决定对addressdata进行标准化,请确保首先清理生产数据,然后对工作表执行任何导入并清理,然后尝试与生产数据匹配并插入新记录。 |
|
|
6
0
有很多方法可以解决这个问题,但这些方法可能并不明显。最好的方法是找到唯一的标识符,用于在字段外匹配拼写错误等。 一些想法
就供应商而言,我刚刚回答了一个类似的问题,我将粘贴到下面。 每个主要提供商都有自己的解决方案。Oracle、IBM、SAS Dataflux等公司都声称在这类问题上是最优秀的。 独立验证评估: 澳大利亚科廷大学数据链接中心进行了一项研究,模拟了440万条记录的匹配。确定提供商在准确性方面的情况(找到的匹配数与可用的匹配数。错误匹配数) DataMatch Enterprise, 最高精度(>95%),非常快速,成本低 IBM Quality Stage ,精度高(>90%),速度快,成本高(>10万美元) 这是我们能找到的最好的独立评估,非常彻底。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |