Il Ă©tait une fois un chef de projet qui rĂ©alisait un projet majeur pour une grande sociĂ©tĂ© internationale de crĂ©dit-bail. J’ai Ă©tĂ© invitĂ© en tant qu’expert BI et MDM/Data Quality pour rĂ©pondre aux questions sur l’utilisation de systèmes spĂ©cialisĂ©s au sein du projet.
Le chef de projet m’a posĂ© une question qui m’a interloquĂ© au dĂ©but : « pour ce nouveau projet devons-nous utiliser un outil MDM/DQ ou non et si oui – quand commencer ».
Les Ă©diteurs d’outils de Data Quality vont rĂ©pondront toujours que la BI sans DQ est impossible, mais e voulais comprendre le raisonnement derrière cette question.
Du point de vue de ce chef de projet :
- les outils de Data Quality vont diminuer son budget (achat ou dev d’outil) et augmenter les charges,
- il a besoin de spécifier des processus complexes de nettoyage et de rapprochement de données,
- alors que les utilisateurs attendent les rapports – et vite.
Vous pouvez facilement comprendre l’hésitation de ce chef de projet. Pour répondre bien à cette question, il nous faut comprendre 2 choses :
- quel ROI clair la sociĂ©tĂ© peut-elle tirer de l’usage de la DQ/MDM dans la BI (Ă©tant donnĂ© qu’il n’existe pas encore de projet MDM au sein de ladite sociĂ©tĂ©),
- quand nous pouvons introduire cette fonctionnalitĂ© (Ă©tant donnĂ© que la première vague du projet aura probablement d’autres prioritĂ©s).
ROI
Le ROI le plus Ă©vident pour la sociĂ©tĂ© de crĂ©dit-bail c’est de gĂ©rer les risques de non-paiement, de dĂ©passement de credit limit, de gestion de fraude potentielle et enfin, suivre un CRM multicanal.
Bref, ce que le chef de projet doit garantir c’est la qualitĂ© de la dimension « client » qui participe dans plus de 90% d’analyses. Pour ĂŞtre au plus prĂ©cis, ce qui compte finalement c’est de pouvoir identifier les doublons – les petits erreurs dans les champs ne feront pas beaucoup de diffĂ©rence, mais si nous avons beaucoup des doublons dans la dimension client – c’est une catastrophe.
Pourquoi on en parle encore en 2020
La stratĂ©gie classique de la BI c’est d’utiliser l’approche suivante :
- choisir une clé fonctionnelle, i.e. ce qui doit être « unique » pour déterminer un objet, par exemple :
- pour personne : nom+prénom+date de naissance,
- pour société : code TVA ou SIREN,
- pour établissement de la société : SIRET,
- pour un contrat : code de contrat;
- pour facture – ID sociĂ©tĂ©, code facture et mois;
- etc…
- créer un index unique sur la clé choisie;
- « standardiser » les données pour enlever le bruit de formatage (supprimer les espaces en double, mettre en majuscule, enlever les accents, remplacer les mots, etc);
- croiser les doigts en espérant que les données ne contiennent pas trop de fautes de frappe.
Il est probable que la majoritĂ© de donnĂ©es sera bien traitĂ©e, mais il y aura forcĂ©ment des doublons qui vont s’infiltrer dans les dimensions si on applique un algorithme aussi basique (prenez juste une faute de frappe dans le prĂ©nom), mais encore pire – certaines sources ne seront pas « intĂ©grables » Ă cause de manque de donnĂ©es dans les champs de la clĂ©.
Il ne faut pas oublier que pour toute table de fait (ou toute dimension de niveau « plus haut » dans le flocon il faudra prĂ©voir la transcodification d’IDs de systèmes source vers les IDs de l’entrepĂ´t et pour cela on utilise l’algorithme suivant :
- pour chaque table remplacer les IDs techniques par les clés fonctionnelles;
- chercher les clés fonctionnelles dans les dimensions pour obtenir les IDs techniques internes au DWH.
Cet ensemble de règles est facile Ă implĂ©menter, mais je vais vous prouver qu’il est gĂ©nĂ©ralement incorrect et voici pourquoi :
- quand on utilise la clé fonctionnelle on mélange 2 sujets : stockage de données et identification de doublons (indexe unique);
- quand on cherche les IDs techniques de DWH dans la table de dimension par une clé fonctionnelle, on mélange 2 sujets : stockage de données et la transcodification.
Tout informaticien connait les consĂ©quences de violation de SoC (Separation of Concerns, en francais : SdP, https://fr.wikipedia.org/wiki/S%C3%A9paration_des_pr%C3%A9occupations). Pour des raisons de simplicitĂ©, par contre, nous avons l’habitude d’ignorer ce fait en BI.
Imaginons la situation suivante : vous devez changer l’algorithme de rapprochement, par exemple, vous devez modifier votre clĂ© fonctionnelle … Dans ce cas, vous allez devoir ajuster pas seulement le flux de chargement de la dimension, mais Ă©galement tous les flux de chargement des faits qui utilisent cette dimension !
Comment faire, donc
Il existe un certain nombre de solutions à ce problème, mais tout revient à séparer les responsabilités, notamment stocker la transcodification séparément avec les données rapprochées :
Maintenant, nous pouvons séparer les traitements :
- Le traitement de chargement de dimension client peut être divisé en parties :
- Préparation de données (génère les données « normalisées » à partir de différentes sources, i.e. format « Pivot »),
- Rapprochement de données (utilise les données « Pivot » et les données de la dimension et génère la table de transco),
- Flux de dédoublonnage et de chargement (utilise les données « Pivot » et la table de transco et génère la table finale).
- Les traitements de chargement des tables de faits utilisent juste la table transco de la dimension et ne connaissent rien de l’algorithme qui l’avait gĂ©nĂ©rĂ©.
Ce flux a Ă©tĂ© dĂ©crit en dĂ©tail dans notre l’article suivant : https://ithealth.io/anatomie-dun-entrepot-de-donnees-efficient/
Si nous n’avons pas les moyens pour mettre en place un rapprochement intelligent, nous pouvons utiliser les clĂ©s fonctionnelles, mais nous ne devons pas afficher cette information aux autres flux – les autres flux doivent juste consommer la table de transcodification et ne pas se baser sur les hypothèses d’algorithme de rapprochement.
Qu’est-ce que cela nous donne ?
- Nous pouvons remplacer un algorithme de rapprochement par un autre à tout moment (clé fonctionnelle -> modèle statistique -> import depuis un outil MDM),
- Nous pouvons stocker les donnĂ©es dans un format qu’on veut (pas d’obligation de mettre dans la dimension une clĂ© formatĂ©e de mĂŞme manière),
- Nous avons gratuitement une traçabilité de rapprochement (via transco).
Maintenant nous pouvons rĂ©pondre Ă l’une des questions de ce chef de projet : si les flux sont bien structurĂ©s, nous pouvons changer l’avis concernant l’approche de rapprochement/dĂ©doublonnage Ă tout moment. Par contre, si on dĂ©cide de simplifier les flux, on aura tout Ă refaire plus tard.
Comment estimer l’ampleur de problème : revenons vers le ROI
Et si nous avons très peu de doublons – nous n’avons pas besoin d’aller dans ces dĂ©tails, n’est pas ?
Voici une mĂ©thode facile que vous pouvez appliquer pour estimer l’ordre de la quantitĂ© de doublons (sur un exemple de dimension clients) :
- prenez toutes donnĂ©es disponibles actuellement (mĂ©langez les donnĂ©es de tous les systèmes disponibles – ça sera votre base de travail/audit),
- prenez par hasard 100-200 lignes,
- pour chaque ligne cherchez les doublons manuellement dans l’ensemble de la base (par nom, par tĂ©lĂ©phone, par nom de la rue, etc) et notez les doublons trouvĂ©s,
- analysez :
- le pourcentage de doublons,
- la complexité de doublons (si vous pouvez « corriger » automatiquement les différences entre les lignes avec un algorithme de standardisation).
Dans notre cas, j’ai pris Ă peu près 200 lignes et j’ai retrouvĂ© autour de 50 doublons, donc nous avons un taux de 50/(200+50) = 20%. Parmi ces 50 doublons il y avait ~10 assez complexes (10/210 = 4,8%).
Conclusion : si nous ne faisons rien, nous aurons probablement 20% de doublons et si on utilise juste la clé fonctionnelle, dans la dimension finale il y aura certainement autour de 4-5% de doublons.
Ce sont les faits avec lesquels nous pouvons adresser le mĂ©tier afin de vĂ©rifier si c’est un niveau de qualitĂ© acceptable (spoiler : c’est une catastrophe Ă long terme car cela veut dire qu’on ne gère pas correctement 5% de la masse de prĂŞts).
Pourquoi du coup un MDM ou un outil DQ
Assez certainement, les dĂ©butants en rapprochement de donnĂ©es ont pour première idĂ©e d’implĂ©menter un algorithme de Levenshtein … Mais le rapprochement de donnĂ©es fait bien est beaucoup plus complexe.
L’auteur de cet article vous dĂ©conseille d’essayer de le faire vous-mĂŞme sauf si vous avez vraiment bien Ă©tudiĂ© le sujet (dans ce cas n’oubliez pas l’interface de data stewardship).
Pour plus de détails vous pouvez lire notre article : https://ithealth.io/rapprochement-de-donnees/.
Conclusions
- Kimball se trompe.
- Parfois un expert implĂ©mente plusieurs flux lĂ oĂą un dĂ©butant en ferait un seul – et l’expert a raison.
- La structure de flux est aussi l’architecture.
- Si vous ĂŞtes du bon cĂ´tĂ© de la force vous mettrez en place une solution modulaire avec la libertĂ© d’utiliser une approche itĂ©rative. Sinon – un jour, vous en paierez le prix !
Bonne santé à vous et à vos systèmes !