MDM + BI = 💀/🧡

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 !