Extraire les doublons d'une base de donnée?

truster Messages postés 10 Statut Membre -  
Gtld Messages postés 25 Statut Membre -
Bonjour,

Nous venons de racheter une société concurrente et je dois fusionner les bases de données clients extraits des outils de CRM. De nombreuses sociétés, contacts, … sont les mêmes, mais ne sont pas saisis de la même manière. Il y en a plus de 8000 en tout, comment faire pour identifier ceux qui sont peut-être les mêmes.

Merci à vous.
A voir également:

6 réponses

Gtld Messages postés 25 Statut Membre 25
 
Ce que je peux proposer c'est Talend Open Studio: un outil open source, "facile à télécharger" certe mais surtout libre d'utilisation : c'est sans frais. Le logiciel est non-intrusif et ne réclame même pas de droits admin pour s'installer :)

L'outil est user-friendly, le rendant utilisable par des utilisateurs peu avancés. Notez notamment la présence des composants DataQuality. Mais l'outil comporte aussi des fonctions intéressantes pour des utilisateurs avancés (java debugger, code injection…). C'est un outil performant et simple d'utilisation.

Le site web: http://www.talend.com/solutions-data-integration/data-migration.php . Le forum est complet et il y a de la documentation à lire. Egalement, vous pouvez participer à un webinar fin Novembre sur comment gérer la qualité de données avec l'open source (27 Novembre 2008).

L'URL pour inscription: https://www2.gotomeeting.com/register/839295108. Entre autres, il portera sur l'impact de la mauvaise qualité de donnée, les différents aspects de la qualité de donnée...

Dites nous ce que vous en pensez!
1
cchristian Messages postés 928 Statut Membre 131
 
Bonjour,

................ comment faire pour identifier ceux qui sont peut-être les mêmes.

En faisant une recherche sur une (ou plusieurs) information/donnée nécessairement commune aux deux bases "clients", le nom de la société ou du contact, par exemple.

Suivant la codification employée il se peut qu'un même nom de société soit libellé différemment dans chacune des bases ex :
DUPONT & DUBOIS  (base 1)
DUPONT  DUBOIS   (base 2)

pour pallier à cela il est nécessaire de "compacter" les caractères.
Je te propose d'effectuer ce rapprochement en écrivant un programme dont les fonctions principales sont :

-- Lectures séquentielles des 2 bases de données sur leur clé primaire (nécessité probable de faire 2 séquences distinctes, une par base clients ou bien une boucle de 2 itérations avec lecture sélective)
(base 1)
..... DUPONT & DUBOIS ..... 
..... DURANT      Freres .....  
............  ...........
(base 2)
..... DUPONT  DUBOIS .....   
..... DURAND              .....    
............  ...........
--Compactage de chaque information/donnée de chacune 2 des bases afin d'éliminer les caractères spéciaux possibles tels que l'espace, le tiret (-), le &, le _(souligné) . . . . susceptibles d'être présents dans une chaîne de caractères telle un nom de société ou de contact. Ex:
DUPONT & DUBOIS  (base 1)
devient 
DUPONTDUBOIS      (base 1)
DURANT      Freres   (base 1)
devient
DURANTFreres         (base 1)

DUPONT  DUBOIS    (base 2)
devient également   
DUPONTDUBOIS      (base 2)
DURAND                 (base 2)
devient
DURAND                 (base 2)

soit: (si base 1 lue la premiere) :

DUPONTDUBOIS      base 1       clé primaire
DURANTFreres         base 1       clé primaire
DUPONTDUBOIS      base 2       clé primaire
DURAND                 base 2       clé primaire
............  ...........

-- Faire une tentative d'écriture dans une base de données temporaire (ou un fichier temporaire à accès direct) d'un enregistrement constitué des informations utiles de chaque client et dont la clé d'accès est la donnée compactée.
DUPONTDUBOIS      base 1       clé primaire (écriture)
DURANTFreres         base 1       clé primaire (écriture)

A chaque rejet pour motif de clés en double rencontré lors d'une (tentative) d'écriture dans cette base de données temporaire, éditer les informations du client en cours et celles contenues dans la ligne de la base de données (lecture nécessaire de la base avec pour clé la donnée compactée du client en cours).
DUPONTDUBOIS      base 2       clé primaire    (rejet duplicate keys)
lignes éditées :
Client en double :
DUPONTDUBOIS  base 1 clé primaire (infos. base de données temporaire)
DUPONTDUBOIS  base 2 clé primaire (infos. client en cours base 1 ou base 2)
DURAND base 2 clé primaire (écriture) ............ ...........
-- Créer un fichier en vue de l'apuration des clients en double (en considérant une base de référence base 1 ou 2) . Ce peut être le base de données temporaire (dans ce cas la base de référence devra être traitée intégralement en priorité) .

A noter que cette méthode à ses limites elle ne permets pas de régler certains problèmes :
(base 1)
.... DUPONT & DUBOIS .....
............ ...........
(base 2)
..... DUPONT et DUBOIS .....

0
cchristian Messages postés 928 Statut Membre 131
 
COMPLEMENTS D'INFORMATION (non exhaustif) :
---------------------------------------------

A noter que cette méthode à ses limites elle ne permets pas de régler certains problèmes :
(base 1)
.... DUPONT & DUBOIS .....
............ ...........
(base 2)
..... DUPONT et DUBOIS .....


D'autres peuvent trouver une solution :

Minuscules Majuscules :
(base 1)
.... DUPONT & DUBOIS .....
............ ...........
(base 2)
..... Dupont & Dubois .....
-- Profiter du compactage pour traduire les minuscules en majuscules.

Cas possible des doubles utiles dans une même base de données (base 1 ou base 2) :
.... DUPONT & DUBOIS .....Rue du bac (client généralement considéré comme donneur d'ordre, par exemple)
.... DUPONT & DUBOIS .....Rue du bassin (client généralement considéré comme client de facturation par ....)
.... DUPONT & DUBOIS .....Rue du lavoir (client généralement considéré comme client de livraison par ....)
(considérer également d'autres cas possibles comme par exemple cas des clients France/Export, ............)
--Déterminer un second champ commun aux 2 bases permettant de les différencier pour constituer la donnée compactée (si possible). Où bien les éliminer temporairement avant la recherche des doubles et n'en garder qu'un seul.
..................................
.................................

Je crains qu'un traitement automatisé ne puisse répondre à l'ensemble du problème.
0
Gtld Messages postés 25 Statut Membre 25
 
Bonjour,

Merci Cchristian pour ces explications.
Ce que je recommenderais c'est de regarder vers des outils ETL qui sont aussi très pratiques.

Ils permettent, entre autre, de faire du "nettoyage de data" incluant la suppression des données dupliquées. Aussi je sais qu'il existe des outils ETL Open Source, rendant le programme facile à télécharger.

Cordialement
0
cchristian Messages postés 928 Statut Membre 131
 
Bonjour,

En effet, c'est toujours préférable d'utiliser des outils existants. merci pour cette info. Si tu pouvais en indiquer un ou deux ça m'intéresse également.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
truster Messages postés 10 Statut Membre 2
 
J'ai regarde quelques outils ETL et cela semble etre ce dont j'ai besoin. J'essayerais Talend et donnerais un avis. Merci pour votre aide!
0
Gtld Messages postés 25 Statut Membre 25
 
Vous pouvez regarder Talendforge pour poser vos questions et trouver des informations : http://www.talendforge.org/
0