Boostez votre reporting PowerBI, grâce à Talend et Jenkins
La combinaison de ces 3 outils vous parait bizarre ? Il va peut-être falloir vous y habituer, car cette architecture souple et efficiente va sans doute en conquérir plus d’un.
Voilà pourquoi.
PowerBI : un outil qui s’intègre à merveille à l’écosystème Talend
Vous connaissez Talend, le célèbre ETL (« Extract Transform Load ») en Open Source capable de se connecter à tout type de données et de développer des flux avec une grande productivité et maintenabilité.
Vous savez aussi que nous utilisons Jenkins pour ordonnancer et planifier les exécutions, comme nous le décrivions dans cet article.
La nouveauté c’est que nous sommes en mesure d’intégrer l’outil de visualisation graphique et de reporting Microsoft PowerBI en Saas à cet écosystème.
Une solution en cas de « casse »
Une actualisation PowerBI est généralement planifiée à 8h tous les matins, considérant que l’ETL a fini son travail et que le Datawarehouse est chargé.
Mais si les traitements de la nuit « cassent » ou si le Datawarehouse est à moitié chargé et donc bancal, PowerBI chargera quand même ses données, quitte à présenter des tableaux de bord faux.
C’est là que notre architecture (et quelques lignes de code) devient intéressante…
En effet, le chargement de PowerBI, par interfaces de programmation (API), ne se fait qu’en bout de chaine :
Résultat : si la « casse » a lieu lors de ce processus, l’enchaînement est stoppé interdisant ainsi le rafraichissement sur un Datawarehouse bancal et la mise à jour de PowerBI sur des données fausses.
Une solution efficiente
Cette architecture complète suppose le seul coût de la licence et de l’abonnement (modique à PowerBI (attention tout de même si vous avez plusieurs centaines d’utilisateurs).
Elle nous a permis d’intégrer cette solution en SaaS chez un client ayant ses données sur site… et sans la fibre !
L’approche technique : de l’extraction jusqu’à la connexion à PowerBI
Parlons technique maintenant : voici l’ensemble du processus d’extraction jusqu’à la connexion à PowerBI.
1. L’extraction des sources est un job (ou un ensemble de jobs) Talend se connectant aux sources de données à traiter (bases MySQL, fichiers Excel, CSV, appels API…). La grande diversité de connecteurs Talend permet de se brancher sur la quasi-totalité des solutions de stockage de données utilisées.
Le job Talend ci-dessous se connecte, par exemple, à une base MySQL et réplique les tables.
2. Le chargement de l’Operational Data Store (ODS) consiste à centraliser les données pertinentes récupérées à l’étape précédente dans une base unique. On peut lors de cette étape purger les colonnes non importantes afin de réduire le volume de données à traiter lors des étapes suivantes. Le ou les jobs Talend se contentent donc de copier les données d’une table vers une autre, sans transformation, à l’exception de l’ajout de clés primaires.
3. Cette étape agrège les données de l’ODS dans des tables de fait et de dimension au sein d’un Datawarehouse. C’est à cette étape que les données sont transformées ; des règles de nettoyage et de conversion des unités sont appliquées, les tables de dimension et de fait sont mises en relation grâce à des clés étrangères.
L’ensemble de ces opérations demande une bonne communication avec les équipes métier, car ce sont elles qui disposent de la connaissance des données et dont les attentes envers les rapports générés plus tard conditionnent les transformations à appliquer.
Ci-dessous un exemple de job Talend.
A partir d’une table des données de vente d’une entreprise commerciale, le chaînage met en relation les données des tables de commandes, les taux de change et les tables de dimensions des articles vendus, pour créer une table de fait du détail des commandes.
4. Un dump de la base du Datawarehouse local est effectué et restauré à l’étape suivante sur le Datawarehouse
5. Le jeu de données PowerBI est alors rafraîchi par des appels API au sein d’un job Talend, pour afficher les dernières données chargées à l’étape précédente
Pour lancer un job Talend à partir de Jenkins, il suffit de spécifier dans la configuration du projet Jenkins le chemin vers l’exécutable .bat du job Talend (ainsi que l’éventuel fichier de configuration en argument).
Côté PowerBI, il est nécessaire de spécifier au jeu de données l’emplacement du Datawarehouse, dans les options du rapport :
Enfin, la dernière étape est d’indiquer à Jenkins quelle périodicité à appliquer pour la chaine de jobs, et l’entreprise dispose désormais d’un Datawarehouse générant automatiquement un jeu de données sur lequel PowerBI peut s’appuyer pour développer des rapports.