Lorsqu’une entreprise cherche à se constituer un entrepôt de données, elle doit être capable de recueillir celle-ci de sources très diverses. Il peut s’agir de base de données, d’api, de fichier CSV, mais également de fichiers plus complexes comme des JSON, des XML, voir des EDI ou des fichiers Avro.
Les fichiers JSON et XML sont des fichiers hiérarchiques, avec un nœud racine, et plusieurs nœuds enfants sans limite de taille ou de profondeur. De leurs côtés les EDI ou les Avro sont des formats de fichiers difficiles à interpréter sans passer par des fichiers de métadonnées qui décrivent leurs schémas. Talend met à notre disposition un outil conçu pour répondre à ces problématiques : le Data mapper.
Data Mapper est un outil proposé par Talend pour transformer à l’aide d’une Map un ensemble de fichiers qui suivent une structure d’entrée donnée en de nouveaux fichiers qui suivent une autre structure de sortie. Cette Map est une suite d’expression qui expliquent comment transposer les éléments de la structure d’entrée vers la structure de sortie, et c’est ce que je vais vous présenter dans cet article.
Un outil un peu caché
Une première chose à savoir sur le Data Mapper, c’est qu’il n’est pas directement accessible via la palette, mais dispose de sa propre interface. Interface qui nécessitera une version pro du studio.
Pour y accéder rien de plus simple, vous avez deux chemins, soit en haut à gauche :
Ou en haut à droite :
Une fois dans cette nouvelle interface, nous allons pouvoir découvrir quelques cas pratiques ensemble.
C’est la carte, c’est la carte
Voici un exemple tout simple de Map pour récupérer certaines données d’un JSON en entrée et les transférer vers un CSV en sortie.
Les transformations de cet exemple sont assez simples. Pour obtenir le nom dans la sortie, on concatène le name et surname de la source, en insérant un espace entre les deux. On arrive à ce résultat à l’aide d’opérateurs logiques que l’on retrouve juste ci-contre :
Pour l’adresse en sortie on retrouve des transformations similaires, avec une virgule et deux champs en plus :
Les habitués de Talend noteront, à raison, que ces transformations peuvent tout aussi bien être faites avec un tMap relié à un composant de lecture et un composant d’écriture, ce qui est vrai. Mais la puissance du Data Mapper ne réside pas dans ce cas simple, mais plutôt, dans ce que l’on va pouvoir faire avec la boucle que l’on trouve dans la source :
En effet le fichier que nous avons en entré a, pour une même personne, un nombre illimité d’amis, information qui ne peut être retranscrite dans une seule ligne de csv.
Le DATA Mapper permet facilement de transformer les informations que contient ce nœud en des informations « plates », avec un seul niveau d’information.
Les fichiers complexes, un nœud Gordien
Nous avons donc en source un nœud racine, Friends, qui contient plusieurs informations pour chacun de ces potentiels amis :
Dans un premier temps on peut être intéressé par le nombre de ces amis. Pour cela dans le fichier de sortie nous allons configurer une valeur comme suit, à l’aide des fonctions du data mapper :
Il est également possible de rajouter un filtre au niveau de la source pour limiter les informations à prendre en compte.
Par exemple on peut décider de ne prendre en compte que les personnes majeures, avec un filtre comme ceci :
Avec cette configuration on passe d’un fichier JSON comme ceci (exemple de la première entité) :
A un fichier de sortie comme cela :
(On retrouve bien le seul ami majeur de Tabatha)
Il est bien entendu possible de faire d’autres transformation, comme obtenir l’âge moyen des amis, ou lister les noms de tous les amis. Pour ce dernier cas je vous conseille malgré tout de limiter à un certain nombre de noms, ou de caractère, pour éviter d’avoir une ligne qui explose en caractères.
Editons des EDI
En plus de pouvoir traiter des fichiers hiérarchisés comme les XML et les JSON, le Data Mapper permet également de travailler sur des fichiers EDI.
Les fichiers EDI (Electronic Data Interchange) sont des fichiers utilisés pour l’échange électronique de données entre entreprises de manière standardisée. Ils permettent de transmettre des informations commerciales et transactionnelles, sans interventions humaines, et donc incompréhensibles par des humains.
Il peut arriver que l’on ait besoin de récupérer les informations de ces fichiers pour un entrepôt de données, et c’est que nous allons voir maintenant.
La première étape va consister à déterminer la norme EDI utilisée par notre fichier source, et une fois ceci fait aller chercher une source avec les spécifications de ce format.
Par exemple pour le format UN/EDIFACT on peut aller chercher un zip ici : https://unece.org/trade/uncefact/unedifact/download
Il sera ensuite possible d’importer ce format dans le Data Mapper très simple en créant une nouvelle structure basée sur ce format de fichier :
Après avoir importé la structure contenue dans le fichier zip, le Data Mapper propose désormais des structures pour l’ensemble des types de messages que peut proposer ce format.
En les mettant en entrée dans le Data Mapper on peut donc obtenir ceci : Ce qui permettrait de traiter des entrées qui ressemblent à ceci :
En utilisant les mêmes méthodes que vue précédemment, il sera possible d’extraire de ce type de message les informations qui nous intéressent, par exemple les adresses dans le nœud NAD :
Ou bien une description de ce qui est commandé :
Une fois la map créée suivant la sortie attendue, l’ensemble des messages EDI respectant ce format pourra être traité, et les informations surveillées seront insérées au sein de notre entrepôt.
En conclusion, le Data Mapper de Talend s’avère être un outil puissant et indispensable pour les entreprises cherchant à simplifier et optimiser leurs processus de transformation de données lorsqu’elles font face à des formats de données complexes. Que ce soit pour convertir des données JSON en CSV ou pour gérer des fichiers EDI, le Data Mapper permet de réaliser ces tâches de manière intuitive et efficace grâce à son interface graphique conviviale et ses nombreuses fonctionnalités avancées.
En permettant des transformations de données précises et rapides, il aide les entreprises à intégrer facilement des données provenant de sources diverses, assurant ainsi une meilleure qualité des données et une plus grande efficacité opérationnelle.