2012-12-30 51 views
1

我是一个完整的新手,因此无法通过查看过去的帖子找到解决方案。我有一个地理数据库(ESRI ArcMAP,大约70k条记录),其中包含从两个数据库中合并的道路杀死数据。查找近似重复查询

Ex。

Date_, Route, MilePost, Database 

10/1/2012, ML34, 113, Animal_Vehicle 

10/2/2012, ML34, 113.4, Carcasses 

10/2/2012, ML16, 86, Carcasses 

我想清理两个数据库之间的重复记录。 MilePostRouteDate_的记录已被删除。问题是这样的:Animal_Vehicle可以在任何时间或一周中的某一天记录冲突,而来自Carcasses数据库的记录仅在正常工作时间记录。因此,在前一天或周末过后的几小时内由Animal_Vehicle记录的尸体重复产生。然后在第二天早上或在星期一(或假期周末时的星期二)将记录复制Carcasse。另一个问题是Animal_Vehicle MilePosts倾向于四舍五入到最接近的半英里,而Carcasses MilePosts更精确。

的目标是建立一个查询或算法返回两个Database值之间配对的记录,因此当Database=Carcasses,该查询返回记录与Database=Animal_Vehicle,其中MilePost是+/-的Carcasses纪录的0.4, Date_Carcasses记录的最后四天内。它会返回示例数据的前两行。

任何反应非常感谢!谢谢!

+0

查看http://code.google.com/p/google-refine/,可能它对您的任务很有用。 – AndreKR

+0

这是一个有趣的链接,谢谢! – user1938198

回答

1

这仅仅是一个奇特的加入:

select * 
from Carcasses c full outer join 
    Animal_Vehicle av 
    on c.date between av.date and av.date+3 and 
     abs(c.Milepost - av.Milepost) < 0.5 and 
     c.route = av.route 

on子句根据您的描述的条件。这不太可能是一个非常快的查询。而且,我假设您正在使用数据库,您可以使用“+3”将日期添加到日期 - 这取决于数据库。

+0

感谢您的回应!我意识到执行此操作的方式必须通过ArcMAP的命令行,它是python并且不支持SQL。它看起来像是正确的概念,所以我只需要弄清楚如何将它翻译成python。再次感谢! – user1938198