Comment automatiser la mise à jour de ses données dans Powerslide avec Talend ?

Dernière mise à jour : 30/07/2021

Les outils de type ETL (Extract, Transform, Load) nous permettent d’extraire nos données brutes de diverses sources, de les transformer selon notre besoin et de les envoyer vers une base de données, un fichier ou une application cible via des API. Talend Open Studio est un ETL qui dispose d’un large panel de connecteurs qui permettent de l’associer à de nombreuses bases de données, et est disponible dans une version open source.

Dans cet article, nous allons vous montrer comment il est possible de faire en sorte que votre dashboard Powerslide soit toujours à jour, sans que vous ayez à lever le petit doigt, en utilisant Talend Open Studio.

maj_donnees

Cas d'usage: Statut des lignes RATP


Pour cela, nous allons utiliser une API de données de la RATP qui permet d’obtenir le statut de toutes les lignes en temps réel : https://api-ratp.pierre-grimaud.fr/v4/traffic

Créer une source de données dans Powerslide

Nous allons donc tout d’abord créer un datasource dans Powerslide, contenant les colonnes que nous souhaitons récupérer depuis l’API de la RATP, ainsi qu’une ligne de données pour les initialiser. Nous avons pour cela créé un fichier Excel contenant les colonnes suivantes :

datasource

Créez votre datasource dans Powerslide en glissant-déposant ce fichier dans la fenêtre Sources de données ou en le sélectionnant dans votre système de fichiers en cliquant sur Importer. Il faut ensuite générer l’API qui permettra d’atteindre ce datasource.

Pour créer la clé d’API, ouvrez votre datasource, et cliquez sur Editer, puis sur API :

Screenshot 2021-03-01 08-43-18 (3)


Ensuite cliquez sur Générer les informations de l’API. Vous obtiendrez alors des informations nécessaires à l’utilisation de l’API comme l’adresse (URL) à utiliser dans la requête, les entêtes (ou headers) à inclure, les éléments à fournir dans le corps (body) de la requête ainsi qu’un exemple de requête qu’on peut exécuter pour mettre à jour le datasource.

Screenshot 2021-03-01 12-02-35 (2)

Créez ensuite votre dashboard à partir de ce datasource. Voici celui que nous avons créé :

Powerslide RATPEvidemment, avec une seule ligne de données, ce tableau de bord n’est pas très utile. Voyons maintenant comment le mettre à jour avec Talend.

Récupérer ses données avec Talend

Parfois, les données brutes dont nous disposons contiennent des erreurs, des éléments qui ne sont pas formatés tels qu’on le voudrait, des colonnes inutiles pour l’analyse… On pourrait également avoir besoin de combiner plusieurs sources pour pouvoir traiter les données de façon plus simple. Pour obtenir un jeu de données exploitable et sans « bruit », il faut passer par l’étape de préparation des données. Elle permettra de corriger les éventuelles erreurs, standardiser les données et les enrichir si nécessaire.

Dans notre cas, nous allons combiner les données récupérées à propos du statut des lignes de métro avec un fichier contenant la première et la dernière station de chaque ligne de métro comme ceci :

données ligne de métro

Tout d’abord, il faut que Talend accède aux sources de données, qui sont ici l’API des données RATP et un fichier Excel. Pour cela on peut utiliser :

    • Le composant tRESTClient pour récupérer les données depuis l’API :
      Pour effectuer un appel API, créez un composant tRESTClient tRESTClient sur l’espace d’édition, puis double-cliquez sur celui-ci. Entrez les informations nécessaires à l’exécution de la requête (l’URL, la méthode HTTP à utiliser, le type de retour, les paramètres et les headers s’il y en a. Les headers se trouvent dans les paramètres avancés du composant).
      Dans notre cas il suffit de faire un GET sur la route de l’API et accepter tous les types de retour :

Screenshot 2021-03-01 11-28-37 (2)

Cependant, la réponse obtenue contiendra 3 éléments : le code de statut de la réponse (statusCode), le corps de la réponse (body) ainsi que la version JSON du corps (string). Pour récupérer les éléments de façon plus simple, nous utiliserons le JSON. Nous devons donc récupérer le champ string de la réponse. Nous allons donc créer un composant tMap tMap qui permet d’accéder aux champs issus de l’appel API, de les transformer selon notre besoin et de retourner en sortie les éléments transformés.

Créez ce composant dans l’espace d’édition et reliez la sortie du composant tRESTClient à son entrée. Pour cela, faites un clic droit sur le tRESTClient, puis cliquez sur Row > Main et ensuite sur le composant tMap. En double-cliquant sur celui-ci, vous pourrez observer 3 colonnes. La colonne de gauche contient toutes les entrées du composant, celle du milieu les éventuelles variables intermédiaires et la colonne de droite contient les sorties du composant. Ainsi, tous les champs récupérés par le composant tRESTClient figurent dans la colonne de gauche :

Screenshot 2021-03-01 11-32-40 (2)

Comme nous voulons uniquement récupérer le champ string de l’entrée, il nous suffit de créer une sortie dans la colonne de droite, et de glisser ce champ dans la sortie créée. La colonne Expression de la sortie sera alors automatiquement remplie avec le nom de l’entrée associée à la donnée ainsi que son nom comme ceci: <nom entrée>.<nom colonne> (ici « row1.string ») et la colonne Column contiendra le nom du champ. Cliquez ensuite sur « OK » pour valider les modifications.

Une fois le champ JSON récupéré, il nous faut en extraire les données pour pouvoir les manipuler.

Pour cela nous pouvons utiliser le composant tExtractJSONFields tExtractJSONFields qui comme son nom l’indique permet d’extraire des champs d’une chaîne de caractères JSON. Reliez la sortie du tMap au composant puis double-cliquez sur celui-ci.

Vérifiez que le Champ JSON est bien notre variable string puis indiquez le Loop JsonPath query. Pour cet exemple nous allons nous concentrer uniquement sur les lignes de métro et l’API de la RATP renvoie les données sous la forme suivante :

Screenshot 2021-03-01 11-35-21

Nous allons récupérer les champs line, slug, title et message de chacun des métros. Nous devons donc effectuer une boucle sur le champ metros, le Loop Jsonpath query sera donc "$.result.metros". Créez ensuite le Mapping en modifiant le schéma des donnés : cliquez sur […] à côté de « Modifier le schéma » et créez les champs à récupérer en sortie comme ceci :

requêteJSON

Cliquez sur OK pour valider les modifications, et remplissez la colonne Requête JSON pour chaque champ :

Screenshot 2021-03-01 11-51-03 (2)

La récupération des données à partir de l’API de la RATP est maintenant terminée. Il faut ensuite lire les données contenues dans notre fichier Excel.

    • le composant tFileInputExcel pour lire notre fichier :

Afin que Talend lise les données du fichier Excel, nous pouvons en premier lieu créer une connexion à l’aide du panel des métadonnées, en faisant un clic droit sur le type de fichier à lire (Fichier Excel pour nous) puis sur Créer un fichier Excel. Choisissez un nom pour la connexion puis cliquez sur Suivant, entrez le chemin d’accès au fichier ou sélectionnez-le dans votre système de fichiers à l’aide du bouton Parcourir. Une prévisualisation du fichier se chargera. Remplissez les formulaires de sélection de données selon votre type de fichier puis cliquez sur Terminer.


Glissez ensuite votre élément sur l’espace d’édition et choisissez tFileInputExcel pour lire le fichier. Double-cliquez sur le composant généré pour vérifier que les informations soient correctes.

tFileInputExcel

Après avoir récupéré les données il faut les « nettoyer », c’est-à-dire enlever les éléments inutiles, corriger les données erronées, uniformiser les données et les coupler avec d’autres sources de données si nécessaire.

Transformer ses données dans Talend

Ainsi, après avoir créé les composants de récupération de données, nous pouvons créer un composant tMap qui nous permettra d’effectuer ces différentes actions.

Reliez les sorties des composants tExtractJSONFields (en 1er) et tFileInputExcel (en 2ème, ce sera une connexion type "lookup") au composant tMap qui vient d’être créé puis double-cliquez sur celui-ci.

GJSon

Pour transmettre les colonnes qui ne nécessitent pas de transformation en sortie du tMap, il suffit de créer une sortie dans la colonne de droite en cliquant sur le bouton  +  puis glisser-déposer ces colonnes dans la sortie créée. Pour formater une colonne de données, cliquez sur la ligne correspondante dans la sortie, puis sur le bouton […], l’éditeur d’expressionScreenshot 2021-03-01 11-44-40 s’ouvrira alors et vous pourrez accéder à toutes les fonctions de Talend et Java pour effectuer la transformation souhaitée. Si vous voulez modifier le nom ou le type de la colonne en sortie, cliquez sur la sortie, puis sur la ligne correspondante dans la fenêtre se trouvant sous les 3 colonnes citées ci-dessus, puis sur le nom ou le type à modifier.

Les données à envoyer dans la requête de mise à jour du datasource via l’API Powerslide devront être sous la forme d’une chaîne de caractères JSON. Nous allons donc retourner en sortie de ce tMap une chaîne de caractères concaténant les différents champs, que nous avons nommée line et dont l’expression est :

"{\"line\":\""+row2.line+"\", \"slug\":\""+row2.slug+"\", \"title\":\""+row2.title+"\",\"message\":\""+row2.message+"\",\"premiere_station\":\""+row3.premiere_station+"\", \"derniere_station\":\""+row3.derniere_station+"\", \"nb\":\"1\"}"

Et pour que toutes les lignes de données soient regroupées dans cette chaîne nous allons également retourner une colonne fictive (ici « id ») qui contiendra la même valeur ("A") pour toutes les lignes. Elle nous permettra par la suite d’agréger toutes les lignes de données.

Lorsque toutes les transformations ont été faites, cliquez sur OK poutAggregateRowr fermer le composant tMap. Il ne reste plus qu’à agréger toutes les lignes en créant un composant tAggregateRow. Reliez la sortie du tMap à l’entrée du tAggregateRow et double-cliquez sur celui-ci. Nous devons faire un « Group by » id, qui est la colonne fictive que nous avons créée dans le tMap et fournir la chaîne de caractères en sortie. Nous l’avons ici nommée string:

Screenshot 2021-03-01 11-52-39 (2)

Le tAggregateRow retournera alors la colonne id et la colonne string générée.

La dernière étape avant de voir les données à jour sur nos dashboards Powerslide, est d’envoyer les données recueillies et préparées à l’API Powerslide. Comme indiqué dans Powerslide lors de la création de l’API, nous avons besoin des données dans un champ data et de la stratégie de mise à jour à appliquer dans un champ strategy :

Pour inclure la chaîne de caractères créée par le tAggregateRow ainsi que les autres paramètres nécessaires à l’API de Powerslide pour effectuer la mise à jour dans le corps de la requête, nous devons créer un autre tMap après notre tAggregateRow, relier la sortie de ce dernier à l’entrée du tMap et renvoyer une chaîne de la forme "{\"strategy\":\"full\", \"data\":["+row4.string+"]}".

Screenshot 2021-03-01 11-55-46 (2)

Il ne reste plus qu’à prendre la sortie du tMap et l’envoyer via une requête HTTP à l’API.

Mettre sa source de données Powerslide à jour via un ETL

Il nous faut donc créer un composant tRESTClient, relier la sortie du tMap au tRESTClient, double-cliquer sur le composant et entrer les informations d’API générées lors de la création du datasource dans Powerslide comme ceci :

Screenshot 2021-03-01 11-58-00 (2)

N’oubliez pas de paramétrer les en-têtes dans l’onglet paramètres avancés :

Screenshot 2021-03-01 11-58-29 (2)

Et voilà, le tour est joué ! La chaîne entière du job est donc :

Screenshot 2021-03-01 12-06-22 (2)

Exécutez votre job et observez votre dashboard actualisé dans Powerslide :

Tableau de bord Powerslide sur le statut en temps réel des lignes de métro de la RATP

Pour que les données soient mises à jour à intervalle régulier, il suffit maintenant d’exporter ce job en faisant un clic droit sur son nom dans le panneau de gauche, puis en cliquant sur "construire le job" et de le faire tourner via un planificateur de tâches : la crontab par exemple si vous êtes sous Linux.

Tutoriel vidéo sur l'automatisation de la mise à jour de ses données Powerslide via Talend

En conclusion,

Automatiser la mise à jour de ses données offre un vrai gain de temps en nous évitant d’avoir à recréer nos présentations entièrement avec les nouvelles données. Avec Powerslide, nos graphiques sont automatiquement mis à jour lorsque la source de données est modifiée. Ainsi, grâce aux ETL comme Talend et à l’API Powerslide, il est simple d’avoir une présentation toujours actualisée et prête à l’emploi.