Retour

Guide Pratique : Mapper le Format EDI-FACT en entrée avec le Data Mapper de Talend

Temps de lecture : 6 minutes

Dans ce tutoriel, vous apprendrez à utiliser Talend Studio pour mapper un fichier au format EDI FACT en entrée et le transformer en un fichier texte en sortie. Vous serez guidé à travers les étapes nécessaires pour configurer le Data Mapper, manipuler les segments EDI, et produire un fichier texte formaté selon vos besoins.

Prérequis :

  • Avoir installé le Studio Talend.
  • Avoir accès au Data Mapper (THmap).
  • Importez les versions EDIFACT qui correspondent à votre fichier source dans les structures de votre Hierarchical Mapper : https://unece.org/trade/uncefact/unedifact/download
  • Connaissances de base sur le Studio et familiarité avec les concepts d’intégration de données et de formats EDI.

Composants utilisés dans le traitement :

  • tFileInputRaw : pour lire les lignes d’un fichier.
  • tHmap : pour mapper le fichier EDI-FACT vers le fichier texte.
  • tFileOutputXML : pour generer un fichier XML.
  • tFileInputXML : pour lire un fichier XML.
  • tHashOutput : pour stocker les données.
  • tHashInput : pour lire les données stocké.
  • TFileOutputMSDelimited : pour générer un fichier texte utilisant plusieurs schéma.
  • tLogRow : pour afficher le contenu d’un flux dans la console d’exécution.
  • Fichier source test ci-dessous :

Scénario :

Vous devez transformer un fichier EDI-FACT contenant des informations de stock (Message RECADV, c’est une réponse d’un système pour bonne réception) en un fichier texte structuré. Le fichier texte devra inclure des données clés comme le numéro de transfert, la date, les détails des articles et la quantité, nous mettrons ça sous format texte multi-schema, une entête et les lignes pour un transfert . Cette transformation sera effectuée en utilisant le Talend Data Mapper pour mapper les segments EDI vers le format XML (Boucles existante dans l’EDI) puis vers un fichier texte.

1. Lecture du fichier EDI + Mapping vers fichier XML

Procédure :

  • Utilisez un composant tFileInputRaw pour lire le fichier EDI brut.
  • Connectez ce composant à un tHMap (Data Mapper) pour effectuer le mapping.
  • Dans le tHMap, spécifiez la structure EDI correspondant à votre version (ici, D01B).
  • Indiquez également le type de message du fichier EDI (ici, RECADV).
  • Chargez la structure EDI dans le Data Mapper pour visualiser les segments et les champs disponibles.
  • Créez votre propre structure XML dans le Hierarchical Mapper ou directement dans le tHMap.
  • Ajoutez les colonnes que vous souhaitez mapper, définissant clairement les niveaux de la hiérarchie XML.
  • Chargez le fichier source EDI dans le Data Mapper pour obtenir un exemple concret. Le composant analysera automatiquement le fichier et identifiera les segments où les données sont situées.
  • Les fichiers EDI contiennent des boucles où les données sont structurées sous forme de valeurs accompagnées de leurs « code qualifiers ». Ces qualifiers déterminent le type de données contenu dans chaque champ.
  • Utilisez des fonctions conditionnelles comme IfThenElse dans le Data Mapper pour extraire les données souhaitées en fonction de leurs qualifiers.
  • Assurez vous que les boucles dans le fichier XML correspondent correctement à la hiérarchie des boucles dans l’EDI.
  • Par exemple, si les données des articles sont situées dans la boucle Loop-LIN-PIA de l’EDI, la structure XML doit pointer vers cette boucle pour aligner correctement les données.

  1. Mettez le chemin de votre fichier EDI dans le TFileInputRaw pour le lire.

2. Lié le TFileInputRaw au THMap, choisissez votre structure d’entrée et de sortie. Vous obtiendrez l’interface ci-dessous par la suite.

Exemple Mapping : Numero_Envoi

Dans Value c’est la valeur de notre champ « Numero_Envoi« , il est lié au champ « E0020 – Interchange control reference » qui se trouve dans le segment UNB qui est une boucle (le format de l’EDI considère que nous pouvons avoir n occurrences à ce niveau là).

  • La Fonction AgConcat sert à concaténer les valeurs dans le champ de sortie si il y’en à plusieurs (Dans le fichier XML la balise Row est l’Entête nous ne l’attendons qu’une fois dans cet exemple ! Il se peut que pour un autre projet ça ne soit pas le cas alors il faudra créer une boucle au niveau de votre balise Row (0:*), AgConcat ne sera donc plus nécessaire).
  • La Fonction SimpleLoop sert à pointer vers la bonne boucle pour récupérer la donnée.

Exemple Mapping : Date_PER

Dans Value de Date_PER : dans la fonction SimpleLoop, le « Input Map Element » c’est la valeur de notre champ « Date_PER« , il est lié au champ « E2380 – Date or time or period value« , or dans la sortie nous avons 2 dates. Dans l’EDI vous pouvez avoir une autre date dans le même segment mais avec un code qualifer différent. Il faut donc dans la SimpleLoop appliquer un filtre « IfThenElse » pour dire que SI « E2005 – Date or time or period function code qualifer » = « 36 » (Date Péremption) alors la condition est vraie et nous prenons la donnée.

3. Dans les Basics Settings du tHMap, pour écrire la sortie sous format Document, cochez la case Document de Write Output As

4. Générez ensuite un fichier XML, renseigné le nom de votre fichier et le chemin pour pouvoir le lire par la suite. Schéma = une ligne de Type « Document« 

Voici ci-dessous à quoi devrait ressembler le job :

2. Extraction du fichier XML + Mapping vers fichier texte multi-schéma

  1. Créer un tFileInputXML pour lire le fichier XML créé précédemment.

Dans le schéma, indiquez les colonnes que vous souhaitez extraire.

Dans le champ Loop XPath query renseignez le chemin de balise de votre XML (Ici nous allons jusqu’à la dernière balise « Lignes ») ce champ est en corrélation direct avec le XPath query de chaque colonne dans le « Mapping » : les « ../ », « ./ » signifient les chemins des balises, « Row » ou « Lignes », ex : « …/ » = recherche dans la balise « message ».

2. Liez le tFileInputXML à un tMap.

Créez deux sorties, une « Entête« , une « Lignes« , dans le fichier source il n’y a qu’une seule entête pour x lignes. Les lignes se retrouverons automatiquement en dessous dans le tFileOutputMSDelimited, si cette condition n’existe pas il vous faut donc une « clé » dans vos entêtes et vos lignes, pour l’exemple nous prenons la valeur « 1 » nommé « Id ».

3. Liez ces deux sorties à des tHashOutput pour stocker la données.

Pour les entêtes, entre le tMap et le tHashOutput mettez un tUniqRow pour dédoublonner les lignes.

4. Utilisez des tHashInput pour lire les données stockés dans les tHashOutput, attention à bien avoir les mêmes schémas entre eux. Ensuite liez les à un tFileOutputMSDelimited.

5. Dans le tFileOutputMSDelimited, désignez quel est le schéma Parent, ici row7 (« Entête« ) :

Remplissez sur le schéma row5 les (« Lignes« ), le schéma Parent, row7, ensuite la colonne qui va permettre de lier les deux schémas, « Key column » = « Id ». « Parent key column », la key column du schéma parent = « Id », elles ont le même nom dans les deux schémas.

Vous savez désormais comment lire le format EDI-FACT via le Data Mapper de Talend, et le mapper dans un autre format.

Laisser un commentaire

Il n'y a pas de commentaires pour le moment. Soyez le premier à participer !