Mercri d'activer JavaScriptFlux d’itération et synchronisation d’événements sous Talend

Flux d’itération et synchronisation d’événements sous Talend

Nous vous retrouvons aujourd'hui pour un nouveau tutoriel Talend sur les flux d'itération et la synchronisation d'événements dans le studio. La première partie de l'article est dédiée à l'utilisation des composants de boucle et des flux d'itération. Dans une seconde partie, nos experts Talend vous expliquent les bonnes pratiques pour la synchronisation d'un sous-job en fonction d'un événement.  




Utilisation des boucles et flux d'itération

 

Dans cette première partie du tutoriel vous allez apprendre à utiliser des composants de boucle. Nous verrons également comment passer d'un flux Main à un flux Iterate et inversement. 

Créez d'abord un nouveau Job nommé « Boucles ».

Ajoutez un composant tLoop et modifier ses propriétés pour que la boucle aille de 1 à 5.


Ajout d'un composant tLoop et modification des propriétés

Ajoutez un composant tFileTouch et reliez-le grâce au seul lien disponible : le lien Iterate.


Ajout d'un composant tFileTouch et jointure avec un lien Iterate sous Talend

Ouvrez les propriétés du tFileTouch. Ce composant sert uniquement à créer un fichier.

Nous allons créer un fichier nommé « fichier_[N° de la boucle] » pour chaque itération de la boucle. Pour cela modifiez le Nom du fichier en choisissant un répertoire sur votre poste et nommez le fichier :

'fichier_' + ((Integer)globalMap.get('tLoop_1_CURRENT_ITERATION')) + '.txt'

Pour générer automatiquement l’accès à la variable de l’itération courante, vous pouvez taper « tLoop » puis faire « Ctrl + Espace » pour afficher les propriétés disponibles.


Aperçu des propriétés du composant tFileTouch sous Talend

Lancez votre Job et regardez dans votre répertoire, vous devriez avoir vos 5 fichiers.


Aperçu des fichiers présents dans le répertoire Talend

Ajoutez maintenant un tForeach.

Ouvrez ses propriétés et ajoutez-lui les valeurs :

'fichier_6'

'fichier_7'

'fichier_8'


Ajout d'un tForeach dans le studio Talend Data Integration

De la même façon que précédemment, ajoutez un tFileTouch et liez-le avec un lien Iterate.

Modifiez son Nom de fichier pour sélectionner le même répertoire puis commencez à taper « tForeach » et faîtes « Ctrl + Espace » pour afficher les propriétés.


Ajout d'un composant tFileTouch et jointure avec un lien Iterate

Sélectionnez CURRENT_VALUE et ajoutez l’extension '.txt'.


Paramétrage du composant tFileTouche : ajout de l'extension .txt

Relancez votre Job et regardez votre répertoire qui devrait contenir tous vos fichiers.


Aperçu du répertoire Talend contenant 8 fichiers

Les liens Iterate ne transmettent pas de données comme les liens Main, ils permettent simplement de répéter une action en fonction des paramètres définis.

Il est cependant possible de transformer une itération en transmission de données et inversement grâce à des composants spécifiques.

Liez vos 2 sous-jobs précédent avec un OnSubjobOK.

Ajoutez ensuite un composant tFileList. Ce composant est un composant d’itération qui permet de lister les fichiers d’un répertoire.

Dans ses propriétés, choisissez comme Répertoire votre dossier précédent.

Ajoutez ensuite un Masque de fichier qui récupérera seulement les fichiers texte commençant par « fichier_ » : 'fichier_*.txt'.


Propriété du composant tFileList : choix du répertoire

Nous allons ensuite afficher dans la console le nom de chacun de ces fichiers ainsi que la date courante. Vous pouvez donc préparer un tLogRow.

Vous pourrez constater en essayant qu’il est impossible de lier le tFileList au tLogRow par un lien Iterate.


Ajout d'un composant tLogRow dans le studio Talend

Il ne nous reste plus qu’à convertir l’itération en flux Main pour pouvoir obtenir nos 2 informations souhaitées. Pour cela, ajoutez un composant tIterateToFlow entre les 2 composants.

Liez vos composants. Vous pouvez voir que le seul lien partant du tFileList est un lien Iterate tandis que le seul lien partant du tIterateToFlow est un lien Main.


Création d'une jointure sous talend via un lien Iterate et un flux Main

Il reste encore à définir le schéma de notre tIterateToFlow. Ajoutez-lui une colonne nom et une colonne date.


Définition du schéma du composant tIterateToFlow dans le studio Talend

Cliquez sur OK puis propagez les modifications de schéma au tLogRow.

Il faut maintenant mapper les valeurs de nos 2 colonnes.

Dans le Mapping, utilisez l’auto-complétion pour le champ nom pour afficher le CURRENT_FILEPATH du fichier.


Utilisation de l'auto-complétion dans le mapping du composant tIterateToFlow sous Talend

Pour le champ date, utiliser la fonction fournie par Talend : TalendDate.getCurrentDate()


utilisation de la fonction TalendDate.getCurrentDat() pour remplir le champ date

Reliez ce sous-job aux autres avec un OnSubjobOk et lancez votre Job. Vous devriez à présent voir dans votre console vos 8 fichiers avec la date du jour.

Vous pouvez désactiver tous vos composants.

Nous allons voir maintenant la conversion des 2 flux dans le sens inverse. Pour cela nous allons lire notre table personne_voiture et pour chaque ligne afficher les informations du propriétaire dans la console.

Depuis vos métadonnées, ajoutez sur votre Job votre table personne_voiture en tant que tDBInput et acceptez d’ajouter à votre Job le groupe de contexte de connexion.


Ajout d'une table en tant que tDBInput dans un job Talend depuis les métadonnées

Ajoutez ensuite un composant tSortRow qui nous permettra de trier les lignes par id, et liez-le par un Main avant de configurer son critère de tri.


Ajout d'un composant tSortRow dans le studio Talend

Ajoutez maintenant un tFlowToIterate qui va nous permettre de convertir notre flux. Décochez la case Utilisation par défaut. En la laissant cochée cela signifie simplement que les variables garderont le même nom, nous allons modifier le nom de notre id pour mieux le trouver par la suite.

Saisissez « personneId » comme nom.


Ajout du composant tFlowToIterate dans le studio Talend

Depuis vos métadonnées, ajoutez votre table personne en tant que DBInput et liez-la par un lien Iterate.


Ajout d'une table en tant que DBInput dans un job Talend depuis les métadonnées

Ajoutez à la suite un tFilterRow et configurez le pour filtrer l’identifiant de la personne selon l’identifiant personneId. Pour cela vous pouvez faire « Ctrl + Espace » dans la colonne valeur et chercher la bonne variable.


Aojut d'un composant tFilterRow dans un job Talend

Pour finir ajoutez un tLogRow pour afficher les résultats.


Ajout d'un composant tlogRow dans un job sous Talend Open Studio

Lancez votre Job et regardez la console.

Vous verrez s’afficher pour chaque ligne de personne_voiture les informations sur le propriétaire.

 

 

Synchronisation d’un sous-job en fonction d’un événement

 

Dans cette deuxième partie, l'objectif va être de lancer une action après un événement défini.

Pour commencer, créez un nouveau Job nommé 'Synchro'.

Créez un répertoire sur votre poste nommé « Synchro ».

Ajoutez un composant tWaitForFile.

Dans ses propriétés sélectionnez le répertoire que vous venez de créer et paramétrez de Déclencher l’action quand un fichier est créé et de sortir de la boucle ensuite.


Création d'un nouveau job et ajout d'un composant tWaitForFile dans le studio Talend

Ajoutez à la suite un tMsgBox qui affichera le nom du fichier lorsqu’il sera créé.

Liez-le avec un Main. Puis dans le Message, faites « Ctrl + Espace » pour chercher la propriété correspondant au nom du fichier.


Ajout d'un tMsgBox pour afficher le nom du fichier et jointure avec un flux Main

Lancez votre Job et observez qu’il tourne en continu.

Dans votre dossier, créez un nouveau document texte.


Création d'un document texte dans un répertoire sur un poste

Dès sa création observez votre Job, une ligne est passé dans votre composant suivant et le nom du document s’est affiché.


Affichage du nom du document créé dans le Job Talend

Vous pouvez arrêter l’exécution de votre Job.


Sur le même sujet...


Orchestration des Jobs, gestion des erreurs et des logs

Apprenez à orchestrer vos jobs et sous-job, assurer la gestion des erreurs, des stats et des logs dans le studio Talend Data Integration.

Découvrir

Bien utiliser le composant tMap dans le studio Talend

Découvrez comment utiliser des filtres de lignes et de colonnes, les jointures et rejets, les variables internes au tMap et les jointures multiples.

Découvrir