Matcher des colonnes appartenant à plusieurs jeux de données

Description du problème :

Je souhaite matcher des colonnes appartenant à plusieurs jeux de données et il me semble que plusieurs options s’offrent à moi. Dans la mesure où je souhaite faire du matching exact, je peux faire :

  1. Un référentiel avec un jeu de données, et appeler ce référentiel dans un noeud de préparation d’un autre flow, avec donc l’inconvénient de devoir faire plusieurs flows,

  2. Une jointure (avec la méthode de jointure qui convient) afin de repérer les cellules vides, avec l’avantage de tout faire en un flow

  3. Un enrichissement, avec ce même avantage

Quelles sont les bonnes pratiques en termes de matching exact ? Des solutions qui seraient plus performantes que d’autres ?

Solution :

Dans le cas de Matching Exact, la fonction de similarité est sans intérêt.

Les jointures offrent des possibilités que l’on ne retrouve ni avec l’enrichissement ni avec les référentiels. On peut choisir l’opération ensembliste parmi:

  • INNER JOIN

  • LEFT OUTER JOIN

  • RIGHT OUTER JOIN

  • FULL JOIN JOIN

Note

Les référentiels font du left outer mais avec un match unique par défaut; ceci peut maintenant être modifié pour inclure les N meilleurs matchs. L’enrichissement fait du left outer avec un ou plusieurs matchs (dans les 2 cas « left » désigne le jeu de données à enrichir).

Il est mieux d’utiliser les jointures pour du match exact.

A titre d’exemple, nous avons un flow sur notre plateforme SaaS qui tourne tous les mois et effectue une jointure exacte (INNER) entre :

  • La base des SIREN des entreprises françaises (donc les maisons mères - soit un peu plus de 20 millions d’entrées)

  • La liste des établissements (donc les filiales - soit un peu plus de 33 millions d’entrées)

Sur une assez peu puissante la jointure est calculée en environ 20 minutes.

Cependant, si le left outer avec match unique convient et qu’il faut réutiliser le jeu de données d’enrichissement dans différents flows, les référentiels seront plus rapides (ils sont pré-indexés) … et ils sont partageables

Exemple de Use Case utilisant un référentiel avec match exact que nous en publions sur notre plateforme SaaS : un référentiel permettant de récupérer de l’information sur des entreprises à partir du n° de SIRET (code activité, adresse, effectifs,…etc.).

Pour les matchs exacts, il vaut mieux laisser de côté les noeud d’enrichissement:

  • Noeuds d’enrichissement :

    plus rapides à utiliser, c’est l’approche idéale quand le jeu de données d’enrichissement est inférieur à quelque dizaines ou centaines de milliers de lignes…en revanche ils sont relativement lents sur les grosses jointures complexes et ils ne sont pas réutilisables d’un flow à l’autre.

  • Référentiels :

    il faut faire un flow supplémentaire qui créera le référentiel. Avantages : ils sont très rapides (même en recherche floue) et scalables (des centaines de millions de lignes). De plus ils sont réutilisables d’un flow à l’autre.