PostgreSQL和Python

时间:2015-04-28 15:29:19

标签: python postgresql match

我正在尝试匹配两个表中没有公共密钥的记录以及数据中的一些错误。具体而言,我在表A中记录了我想要与表B中具有相同组的记录匹配的给定组和日期,但日期可能不同。另外,一些记录可能只存在于表A或B中。

示例表格

Table A
=========================
id | group |   date | ...
---+-------+--------+----
 0 |     A | 1/1/15 | ...
 1 |     B | 1/3/15 | ...
 2 |     A | 1/5/15 | ...
 3 |     A | 1/5/15 | ...
 : |     : |      : | :::
99 |     Z | 4/5/15 | ...

Table B
=========================
id | group |   date | ...
---+-------+--------+----
 0 |     A | 1/2/15 | ...
 1 |     A | 1/5/15 | ...
 2 |     A | 1/6/15 | ...
 : |     : |      : | :::
99 |     Z | 4/5/15 | ...

这里我希望表A中的记录0与表B中的记录0匹配,即使日期不同(但接近),表A中的记录1在表B中缺失,并且可能有多个记录表A(或B)具有相同的组和日期(这些不重复)。

目前我不匹配日期不同的记录,但我丢失了可能有用的数据。因此,我想迭代地改进匹配,以便我有更完整的匹配。我认为概率方法最有意义而不是确定性方法,但对这方面的争论持开放态度。

我的第一个问题是什么是正确的工具。目前这些表位于PostgresSQL数据库中,并且足够大,以至于很难在本地计算机上处​​理它们。但是我不熟悉在Postgres中执行概率连接的任何方法,但我希望Python对概率记录链接有很好的(足够的)支持。

可以(应该)在Postgres或其他工具(Python)中完成吗?任何人都可以指引我使用任何资源(示例,代码等)吗?

1 个答案:

答案 0 :(得分:-1)

我广泛使用了pg_trgm(三克)并开发了元素权重等级(每个组合的评分和权重因子或单个元素匹配)。如果您通过三元组加入,Trigrams将“记录”放在一起,然后将分数评估为分类机制。

另外,请确保在匹配之前先“标准化”您的数据。

PostGIS对于地址非常有用,对于性别来说也是常用的x-walk 在手机,电子邮件等格式化。

  来自LIFE的sel *;