通过比较两个不同数据库中的2个或更多列来识别重复项

时间:2019-06-18 12:44:15

标签: python dataframe data-mining data-modeling

我有2个只读数据库db1和db2。我想比较这些数据库和数据库本身之间的行,以获得相似的匹配记录。

供应商名称和编号,发票金额,发票日期,发票编号是可比较的。同一笔交易中的匹配次数越多,重复交易的机会就越高。

示例1:我们具有表db1和db2的数据,预期结果如下:

表db1:

供应商名称/供应商编号/发票编号/发票日期/发票金额

Cintas   /    100001234  /  8001   /  5-17-2019  /  Rs.450.00 
Cintas   /    100001234  /  9001   /  6-17-2019  /  Rs.220.00  
ABB      /    10025552   /  25255  /  5-01-2019  /  Rs.550
Abc      /    100001122  /  154666 /  5-21-2019  /  Rs.180 

表db2:

供应商名称/供应商编号/发票编号/发票日期/发票金额

Cintas /    100001234   /  8001    /  5-17-2019  /  Rs.450.00 
Cintas /    100001234   /  9001    /  6-17-2019  /  Rs.550.00
Bcc    /    102103312   /  154666  /  5-05-2019  /  Rs.180  
xyz    /    100001414   /  100012  /  5-21-2019  /  Rs.750.00
Acc    /    10210331f   /  154666  /  5-05-2019  /  Rs.180

预期结果:第一对匹配所有列,第二对匹配所有列(发票金额除外),第三对仅匹配发票号和发票金额。

供应商名称/供应商编号/发票编号/发票日期/发票金额

Cintas /    100001234   /   8001    /  5-17-2019  /   Rs.450.00  
Cintas /    100001234   /   8001    /  5-17-2019  /   Rs.450.00 

Cintas /    100001234   /   9001    /  6-17-2019  /   Rs.220.00 
Cintas /    100001234   /   9001    /  6-17-2019  /   Rs.550.00   

Abc    /    100001122   /   154666  /  5-21-2019  /   Rs.180 
Acc    /    10210331f   /   154666  /  5-05-2019  /   Rs.180

示例2:下面的示例很可能被视为重复的可能性很高。

Supplier Name / Supplier # / Invoice # /    Invoice Date /  Invoice Amount     
Cintas /    100001234   /     8001    /    5-17-2019  /   Rs.450.00  
Cintas /    100001234   /     8001    /    5-17-2019  /   Rs.450.00 

示例3:该示例也将突出显示为一种潜在可能性,但可能性较小,因为匹配的条件仅显示了供应商,发票编号,发票日期。

供应商名称/供应商编号/发票编号/发票日期/发票金额

Cintas /    100001234 /   9001   /   6-17-2019  /   Rs.220.00 
Cintas /    100001234 /   9001   /   6-17-2019  /   Rs.550.00 

他们用%(例如90/75/50/25%)对潜在重复项进行排名,百分比越高,工具感觉到重复项的可能性就越大。

请建议使用算法或工具从大约10,00,000条记录中查找重复项,并根据列匹配项获得%匹配项。

0 个答案:

没有答案