繁体   English   中英

根据多个条件匹配记录(来自大型数据集)

[英]Matching records based on multiple criteria (from large dataset)

我的数据库中有一个银行帐户清单。 我们想尝试根据家庭对这些帐户进行分组。 我们根据以下三个条件进行匹配:

  • 社交网络
  • 客户编号(这是银行的任意编号)
  • “地址字符串”(基本上是街道地址和邮政编码)

如果这三个事物中的任何一个在两个帐户之间匹配,则应将这两个帐户放在同一组中。

据我了解, 这无法使用SQL joins来完成 我也不知道如何以编程方式进行操作。 我们的数据库中有数百万个帐户,并且每个月的数量增长成千上万(约15万个ish),因此遍历每条记录并说:“好吧,执行SELECT * WHERE ssn = (this account's SSN) ”,因为它将永远永久。

我知道这是一个模糊且开放性的问题,但是有关如何进行的任何建议? 我不在乎您在回答中使用哪种语言(如果您使用任何一种语言)。

以我的诚实观点,您最好的选择是实现家庭对帐户的一对多或多对多关系。

我可以想到两种方式来做这样的事情。 第一个(可能不是最好的解决方案)是在帐户表中添加一列来存储住户。 我个人将尽可能避免这样做。

其次,创建一个“家庭”表来存储家庭PK,并创建一个家庭交叉参考表来存储家庭FK和帐户FK。

然后,我将使用您使用的任何编程语言创建一个过程(希望它是面向对象的,您可以创建一个“对象”,该对象可用于下一部分,以后也可以使用)。

建立数据库后,我将构建一个“方法”来接受一个帐户,并通过ssn,客户编号和地址进行比较,并返回一个相似帐户ID的列表(这可能非常有用,可能会使您的初始处理更快)和/或返回类似帐户可能属于的家庭列表

这是让我担心的部分……在某些情况下,通过地址链接的帐户可能属于也可能不属于与通过帐号链接的帐户属于或不属于同一家庭。 父母分开的一个“孩子”(一个客户编号)有一个由每个父母建立的帐户(两个帐户的地址很可能不同),还有他们的OWN帐户...等等...我个人会来通过某种商业逻辑将返还的家庭限制为只有1个家庭...

此时,通过具有相似帐户的列表,并返回至少一个相似帐户中的一部分的单个家庭,然后可以使用该家庭ID更新这些特定帐户。

我会在那时设置逻辑,以遍历表中的每个帐户并在整个过程中运行它。是的,这将非常昂贵。...但是您只需要执行一次即可。

之后,在输入帐户后,为输入设置过程以自动查找帐户并将其放入家庭。

根据您的前端,这可能不是一个简单的过程。

无论如何,我还将开发一个流程/用户界面,该界面将允许用户(可能是客户服务代表)删除/移动家庭之间的帐户。

这是一个开始,只是激发您灵感。

好吧,我看不到让每条记录检查其他每条记录以查看它是否在同一个家庭中的任何方法。 我看到的唯一效率是,如果记录已经存在于家庭中,则可以跳过检查。 在伪代码中

delete all record.household
currentHousehold=1

foreach record
    record.household=currentHousehold
    foreach record
        if record.household is null
            if meet criteria 1
                record.household=currentHousehold
                exit
            else if meet criteria 2
                record.household=currentHousehold
                exit
            else if meet criteria 3
                record.household=currentHousehold
                exit
            end if
        end if
    next record

    currentHousehold++
next record

假设您向表中添加了一个家庭列,您可以对其进行分组。 我指出应该清除当前的家庭价值-以防万一某些数据发生变化。

如果您可以拦截对条件字段的任何可能更改,那么您可以在那里找到该记录的新家庭。 在这种情况下,住户价值可以保持不变,脚本仅需寻找住户即可获得新记录(或者,如果可以的话,只需在添加记录时这样做即可)。 如果您具有这种控制权,那么应该将每条记录放入家庭中一次以用于现有记录(添加时或修改条件字段时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM