Consolider des sources de données hétérogènes
Le but premier de ce type d'outil est de consolider des sources de données hétérogènes vers une seule base qu'on appelle généralement un entrepôt de données. On entend aussi parler de DataWarehouse dans le cas de données structurées (MySql par exemple), ou de DataLake dans le cas de données non structurées (MongoDB par exemple).
Avant de rentrer dans le vif du sujet commençons par voir ce qui est qui est ce qu'il permet
La plupart du temps on utilise un ETL pour extraire des données depuis des bases de données métiers, les transformer pour appliquer un format, nettoyer les jeux de données ou transformer certaines des valeurs. Une fois le flux d'entrée nettoyé et "homogénéisé", on peut le stocker dans notre entrepôt (concrètement, notre base de données).
On se représente les données issus des bases métiers comme des flux d'entrée, sur lesquels on applique différentes opérations pour obtenir un flux de sortie propre.
Pour bien comprendre cette base, prenons un exemple.
Imaginons qu'une entreprise a plusieurs canaux de vente : un magasin physique, et un site de vente en ligne.Elle va enregistrer des transactions et des factures sur ces 2 systèmes. L'un va enregistrer simplement un fichier plat (typiquement une sortie caisse au format CSV). L'autre (le site) va enregistrer des données dans une base MySQL. Jusqu'ici, vous êtes avec moi.
Imaginons que l'entreprise est très consciencieuse et applique systématiquement la même nomenclature à ses produits : 1 produit = 1 code article, quelque soit le canal de vente.
Le gérant souhaite avoir de la visibilité sur les produits qui se vendent le mieux avec un tableau de bord.
La première approche consiste à exporter les données du site dans un tableau Excel, d'importer le CSV du logiciel de caisse et de réaliser un joli tableau croisé dynamique. Dans cet exemple, ça peut passer. Mais multiplions ces produits par 1000 et les canaux de ventes par 3 et le tableau Excel va vite devenir compliqué à manipuler.
Si on corse un peu les choses en imaginant que la base Mysql enregistre les ventes en centimes, le logiciel de caisse en euro et ça devient vite un casse tête.
C'est là que l'ETL prend tout son sens. Il va nous permettre d'automatiser les transformations que l'on aurait habituellement appliqué manuellement sur nos données.
L'ETL que j'utilise personnellement est celui de la suite de Business Intelligence "Penthao". Il porte le nom de Kettle (ou Spoon), et il a le gros avantage d'être open-source et, surtout, gratuit.
Le plus compliqué avec kettle, c'est de l'installer. Ce logiciel étant écrit en Java, j'ai eu droit aux soucis de compatibilité liés aux versions de JDK sur les 3 installations que j'ai réalisé.
Esthétiquement, Kettle est rudimentaire. En revanche, la fiabilité des traitements est sans faille. C'est tout ce que l'on attend d'un outil qui va gérer tous nos flux de données par la suite.
Dans le cadre de mon poste de Responsable Acquisition, j'avais en charge nos activités d'emailing, avec environ 100K emails envoyés par semaine, sur 5 marques différentes, avec 3 à 4 outils d'emailing différents, par marque. Consolider les données d'ouverture de mails était primordial, pour garder une bonne visibilité sur la qualité des campagnes envoyées au fil du temps. Ajoutez à cela le canal SMS, et les messages envoyés via nos Chatbots... ça commence à faire beaucoup d'activité à consolider.
Voici à quoi peut ressembler une transformation assez basique :
On extrait les données depuis les bases métiers (outil d'emailing, de sms, de chatbot), on transforme ces données pour avoir une structure homogène (par exemple, l'identifiant du lead : gerard@dupont.fr = 06060606 = 1234432343, c'est la même personne) et on charge ces données dans une nouvelle base, propre, structurée, et homogène.
C'est sur cette dernière base de donnée que l'on effectue nos analyses, ou que l'on branchera notre outil de visualisation de donnée. Cela nous permettra de savoir si un lead a été exposé à notre marque sur une période donnée et par quel canal, sans avoir à consolider manuellement toutes ces données.
Le plus beau dans tout ça, c'est qu'une fois la transformation kettle paramétrée, on peut l'exécuter automatiquement et à intervalle régulier.
Ce ne sont que 2 exemples très basiques qui permette d'illustrer l'utilité d'un ETL comme Kettle. Il existe en réalité un grand, grand nombre de cas d'usages. Ce qu'il faut retenir, c'est qu'un ETL permet de structurer des données issus de sources diverses et variées, pour mieux les analyser.
Dans le cas que je présentais sur mon projet de mise en place d'un outil de visualisation de données, vous comprenez mieux pourquoi un outil comme Kettle est juste indispensable.