Ajouter des enregistrements à un fichier


Préambule :

Il n’est pas très efficace de traiter beaucoup d’information par des services web ou bien d’extraire des informations d’une base de données liée à une application durant une heure de forte utilisation.
Ainsi, beaucoup d’organisations continue à maintenir un système de batch quotidien basé sur des fichiers plats.
De plus, de nombreuses applications non modernes communiquent avec le monde extérieur uniquement par des fichiers plats.
Il est donc important pour un intégrateur de données de comprendre différents formats de fichiers et de connaître les composants qu’offre Talend Open Studio Data Integration pour traiter ce type de fichiers de manière efficace.

Objectif :

L’objectif de cet article est de voir ensemble comment ajouter des lignes à un fichier texte existant grâce à la connexion entre deux sous-jobs.

1 ère partie - Job simple

La première chose à faire est de créer un nouveau job. Pour cela, il est nécessaire de se rendre dans le panneau du repository et de cliquer droit sur job design . Vous allez voir apparaître create job , il faudra donc cliquer dessus.

La fenêtre de création de job apparaît. Pour crér un job, un nom doit être renseigné. Le nom du job est obligatoire. Je vous laisse choisir le nom du job cela n’a aucune incidence sur la suite. Il faut juste penser que le nom du job ne doit pas contenir d’espace ou de caractères spéciaux. Il est également recommandé de renseigner le but (purpose) ainsi qu’une description afin de documenter ses jobs.

A présent l’interface de design des job apparaît au centre de l’interface de Talend Open Studio Data Integration.

Nous allons commencer par choisir un composant dans la palette des composants. Ce composant se nomme tFixedFlowInput .
C’est un composant qui permet de renseigner des données directement dans Talend Open Studio.
Pour choisir ce composant, vous pouvez saisir le nom du composant dans la barre de recherche qui se trouve en haut de la palette de composants.

Une fois le composant trouvé dns la palette de composants, il faut cliquer sur le composant pour le sélectionner et aller dans le panneau de design et cliquer dans un espace vide pour que le composant apparaîsse.

Le composant est apparu. Il faut donc maintenant le paramétrer en se rendant dans la vue Component et cliquer sur Edit schema pour renseigner le schéma du composant.
La fenêtre d’édition du schéma apparaît.

Nous allons renseigner deux colonnes ainsi que leur type. Puis cliquer sur ok afin de confirmer notre schéma.

Il suffit maintenant de renseigner toujours dans la vue Component le nombre de lignes que l’on veut ainsi que les valeurs des 2 colonnes.
Dans cet exemple j’ai choisi une ligne et j’ai renseigné comme valeur “maths” pour la colonne matière et 12 pour la colonne moyenne.

Notre job simple est presque fini. Il manque une sortie. Pour ce faire, nous allons choisir le composant tFileOutputDelimited dans la palette de composants et le placer dans le panneau de design.

Comme tout composant, il est nécessaire de paramétrer ce composant en se rendant dans la vue Component . Ce qui est important à paramétrer pour le composant tFileOutputDelimited c’est le chemin et le nom du fichier de sortie.

J’ai donc créé un dossier sur mon bureau talend_sortie . Et c’est ce dossier qui sera choisi. Le fichier de sortie aura pour nom out.csv .
Le séparateur de ligne est celui par déaut, à savoir le séparateur de ligne linux “ ”. Le séparateur de champ est celui par défaut à avoir : “;”.

Notre composant tFileOutputDelimited étant paramétré, il faut le relier au premier composant tFixedFlowInput . Pour ce faire, vous pouvez cliquer droit sur le premier composant, un menu contextuel va apparaître. Choisissez Row et Main .

Vous devriez être à présent au même niveau que l’image ci-dessous.

Notre job est à présent fini. Nous allons l’exécuter et vérifier que nous avons bien notre ligne dans le fichier out.csv du dossier talend_sortie . Cette ligne doit contenir “maths” dans la colonne 1 et le nombre 12 dans la colonne 2.

Pour exécuter le job, rendez-vous dans la vue Run et cliquer sur le bouton Run

Si vous avez suivi correctement les étapes précédentes, aucune erreur ne devraient être présentes dans la console de la vue Run

Afin de s’assurer que le job à bien fonctionner, il suffit de se rendre dans le dossier où a été enregistré le fichier de sortie et de l’ouvrir. Pour moi c’est le dossier C:userendesktop alend_sortie . Et le fichier se nomme out.csv . Comme le montre l’image suivante, le fichier contient une ligne :
maths 12

Ainsi le job a bien fonctionné.

2 ème partie - Ajouter une ligne à un fichier existant

Toutes les étapes précédentes nous ont permis de créer un job simple produisant un fichier de sortie contenant une ligne de données. Ce job simple est ce que l’on appelle un sous-job. Pour ajouter une ligne au fichier de sortie out.csv , nous allons dupliquer le premier sous-job.

Pour ce faire cliquer droit sur un espace vide du sous-job et choisir dans le menu contextuel qui apparaît copy .

Cliquer droit ensuite en dessous du sous-job (dans un espace vide) et sélectionner paste pour coller le sous-job.

Un second sous-job identique fait sont apparition.

Afin d’y voir plus clair nous allons nommer nos deux sous-jobs. Pour ce faire, il faut cliquer gauche sur un espace vide du premier sous-job et se rendre dans la vue Job .
Cocher la case show title afin que la zone de texte title apparaisse.
Mettez le titre que vous désirez. Pour ma part j’ai choisi premier sous-job

Faite la même opération pour le sous-job 2 avec pour titre dans mon cas second sous-job .

A présent, nous allons paramétrer le composant tFixedFlowInput du second sous-job.
Pour ce faire il faut cliquer sur Edit schema dans la vue component et renseigner comme précedemment les 2 colonnes matière et moyenne.
Pour valeurs, cette fois-ci nous pouvons mettre par exemple physique (entouré par des guillemets) et 15 (pour la colonne note).

Afin de rajouter des lignes au fichier de sortie généré par le premier sous-job, il faut préciser dans le paramétrage du composant tFileOutputDelimited du second sous-job le même fichier de sortie à savoir out.csv dans le dossier talend_sortie . Par ailleurs il faut cocher la case append .

Le paramétrage des sous-jobs est terminé, il reste à relier les deux sous-jobs. La liaison se fera à l’aide d’un trigger. Le but est d’exécuter le second sous-job uniquement si le premier sous-job s’est déroulé sans erreur. Pour cela il existe le trigger onSubJobOk . Cliquez droit sur un espace vide su preier sous-job et choisissez
trigger et On Subjob Ok.

Le job est terminé. Nous pouvons à présent exécuter le job complet. Pour ce faire, rendez-vous dans la vue Run et cliquer sur le bouton Run . Si tout se passe bien, il ne devrait pas y avoir de ligne rouge dans la console intégrée à la vue Run .

Pour vérifier que notre de fichier de sortie contient bien deux lignes et non une seule, il suffit de se rendre dans le dossier où est enregistré le fichier. Pour mon cas c’est le dossier talend_sortie .

Ce tutoriel touche à sa fin. Nous avons donc vu comment à partir d’un fichier existant généré par un sous-job, ajouter une ligne supplémentaire grâce à un autre sous-job qui s’exécutera uniquement si l’exécution du premier sous-job n’a pas entrainé d’erreur.

Ce tutoriel vous a permis de voir les éléments suivants :
1. le composant tFixedFlowInput utilisé avec le mode single table .
2. le composant tFileOutputDelimited et sa propriété append
3. La notion de sous-job
4. Le trigger onSubJobOk

Pour vous entraînez, n’hésitez pas à refaire en changeant le composant d’entrée afin de se rapprocher de cas créel et de complexifier vos jobs.

© 2016 - 2017 réalisé par Benjamin LOMBARD