KDB - Найти дубликаты или похожие записи в одном столбце - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь исключить дубликаты записей для клиентов в моем списке контактов.Предположим, что в моей таблице три столбца (FirstName, LastName, CustomerID).

Может ли кто-нибудь помочь мне создать запрос, который идентифицирует разные CustomerID с одинаковыми или очень похожими именами и фамилиями?Мы получаем несколько записей из-за того, что продавцы ищут имя и не находят его из-за ошибок в написании.Затем они создают новую запись для клиента с немного другим написанием имени.

Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

Один из подходов состоит в том, чтобы управлять отображением имен в обычные (неправильные) написания, а затем сопоставлять все различные написания обратно с намеченным именем.Затем сгруппируйте их.

t:([] fn:100?(`John;`Mike;`Bob;`john;`Johnn;`Mick;`Bobby);ln:100?(`Doe;`Smith;`doe;`Do;`smith);id:til 100)

mapFN:exec similar!name from ungroup flip `name`similar!flip (
    (`Bob; (`Bob;`bob;`Bobby;`bobby));
    (`John; (`John;`Johnn;`john));
    (`Mike; (`Mike;`mike;`Mick;`Michael))
    );

mapLN:exec similar!name from ungroup flip `name`similar!flip (
    (`Doe; (`Doe;`doe;`Do));
    (`Smith; (`Smith;`smith;`Smyth))
    );

Без сопоставления:

q)`fn`ln xgroup t
fn    ln   | id
-----------| ----------------
Mick  Do   | 0 25 26 50 68 71
Bobby Smith| 1 22 23 83
John  Smith| 2 8 48 51 69 85
Mike  Doe  | 3 44
john  doe  | ,4
Mick  Doe  | 5 47 95
John  Doe  | 6 46 49 63
john  Smith| 7 66 74
Johnn doe  | 9 13 79 94
Mick  doe  | 10 20 55 67
Bobby smith| 11 17 18 53
john  Doe  | 12 21 56
...

С сопоставлением:

q)`fn`ln xgroup update mapFN[fn],mapLN[ln] from t
fn   ln   | id
----------| -----------------------------------------------------------------
Mike Doe  | 0 3 5 10 20 25 26 39 44 47 50 52 55 67 68 70 71 78 95 97
Bob  Smith| 1 11 17 18 22 23 30 38 45 53 77 82 83
John Smith| 2 7 8 16 19 33 37 40 43 48 51 64 66 69 73 74 80 85 87
John Doe  | 4 6 9 12 13 21 31 32 41 42 46 49 56 57 62 63 65 72 79 81 86 89 91
Bob  Doe  | 14 24 27 28 35 54 58 59 61 75 76 84
Mike Smith| 15 29 34 36 60 88 90 93 96 98

Вы также можете сделать что-то более сложное с сопоставлением с регулярным выражением.

Отображение должно быть довольно точным, хотя в противном случае вы можете получить ложные группировки

...