tJavaFlex - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Propriétés du tJavaFlex

Famille du composant

Custom Code

 

Fonction

Le tJavaFlex permet de saisir du code personnalisé afin de l'intégrer dans le programme Talend. Avec le tJavaFlex, vous pouvez saisir les trois différentes parties du code Java (start, main et end) constituant un composant qui permet d'exécuter une opération souhaitée et non disponible dans les actuels composants Talend.

Objectif

Le tJavaFlex vous permet d'ajouter du code Java dans ses sections de code Start/Main/End.

Basic settings

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

Cliquez sur Sync columns pour récupérer le schéma du composant précédent.

Ce composant offre la fonction de schéma dynamique. Cela vous permet de récupérer des colonnes inconnues à partir de fichiers source ou de copier des lots de colonnes d'une source sans avoir à mapper individuellement ces colonnes. Pour plus d'informations concernant les schémas dynamiques, consultez le Guide utilisateur de Studio Talend.

Cette fonctionnalité de schéma dynamique est conçue pour permettre de récupérer des colonnes inconnues d'une table. Il est recommandé de l'utiliser uniquement à cet effet et non pour créer des tables.

 

 

Built-in : Le schéma sera créé et conservé pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

 

 

Repository : Le schéma existe déjà et il est stocké dans le Repository. Ainsi, il peut être réutilisé. Voir également le Guide utilisateur du Studio Talend.

Lorsque le schéma à réutiliser contient des valeurs par défaut, qui sont des entiers (integer) ou des fonctions (function), assurez-vous que les valeurs par défaut ne sont pas entourées de guillemets. Si c'est le cas, vous devez supprimer manuellement les guillemets.

Pour plus d'informations, consultez https://help.talend.com/display/KB/Verifying+default+values+in+a+retrieved+schema (en anglais).

  

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, sélectionnez No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

 

Data Auto Propagate

Cochez cette case pour propager automatiquement les données au composant suivant.

 

Start code

Saisissez le code Java qui va être appelé lors de la phase d'initialisation.

 

Main code

Saisissez le code Java qui va être appliqué pour chaque ligne du flux.

 

End code

Saisissez le code Java qui va être appelé lors de la phase de clôture.

Advanced settings

Import

Saisissez le code Java permettant d'importer, si nécessaire, la librairie externe utilisée dans le champ Main code de l'onglet Basic settings.

 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du composant.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant peut être utilisé en tant que composant de début, de milieu et de fin de Job, ainsi qu'en tant que sous-job à un seul composant.

Limitation

Il est nécessaire de connaître le langage Java.

Scénario 1 : Générer un flux de données

Ce scénario décrit un Job à deux composants dont le but est de générer un flux de trois lignes décrivant les différentes civilité : mademoiselle (Miss), madame (Mrs) et monsieur (Mr), et de les afficher dans la console.

Construire le Job

  1. Cliquez-glissez un composant tJavaFlex de la famille Custom Code et un composant tLogRow de la famille Logs & Errors dans le Job Designer.

  2. Connectez-les via un lien Row Main.

Configurer le composant tJavaFlex

  1. Double-cliquez sur le composant tJavaFlex pour paramétrer ses propriétés.

  2. Dans la liste Schema, sélectionnez le mode Built-in et cliquez sur le bouton [...] à côté du champ Edit schema pour décrire manuellement la structure des données à passer au composant suivant.

  3. Cliquez sur le bouton [+] pour ajouter deux colonnes : key de type Integer et value de type String.

  4. Cliquez OK pour valider les changements et fermer la boîte de dialogue.

  5. Dans les propriétés du tJavaFlex, cochez la case Data Auto Propagate pour propager automatiquement les données au composant suivant.

    Dans cet exemple, n'effectuez pas de transformation sur les données récupérées.

  6. Dans le champ Start code, saisissez le code qui sera exécuté lors de la phase d'initialisation.

    Ici, le code indique l'initialisation du composant tJavaFlex en affichant le message START et met en place la boucle et les variables utilisées par la suite dans le code Java :

    System.out.println("## START\n#");
    String [] valueArray = {"Miss", "Mrs", "Mr"};
    
    for (int i=0;i<valueArray.length;i++) {

  7. Dans le champ Main code, saisissez le code qui sera appliqué pour chaque ligne de données. Ici, l'objectif est de retourner chaque clé (key) avec sa valeur :

    row1.key = i;
    row1.value = valueArray[i];

    Avertissement

    Dans le champ Main code, "row1" correspond au nom du lien qui sort du tJavaFlex. Si vous renommez ce lien, vous devez modifier le code de ce champ.

  8. Dans le champ End code, saisissez le code qui sera exécuté lors de la phase de clôture. Ici, l'accolade ferme la boucle et le code indique la fin de l'exécution du tJavaFlex en affichant le message END :

    }
    System.out.println("#\n## END");

  9. Si nécessaire, assurez-vous que le schéma a bien été propagé au tLogRow en double-cliquant sur le composant et en cliquant sur le bouton [...] à côté de Edit schema.

Sauvegarder et exécuter le Job

  1. Enregistrez le Job en appuyant sur Ctrl+S.

  2. Exécutez le Job en appuyant sur la touche F6 ou en cliquant sur le bouton Run, dans l'onglet Run.

    La console affiche les trois civilités, ainsi que leur clés correspondantes.

Scénario 2 : Traiter des lignes de données avec le tJavaFlex

Ce scénario décrit un Job à deux composants générant des données de manière aléatoire, récupérant et traitant ces données ligne par ligne avec du code Java via le tJavaFlex.

Construire le Job

  1. Cliquez-glissez un composant tRowGenerator de la famille Misc et un composant tJavaFlex de la famille Custom Code dans le Job Designer.

  2. Connectez-les via un lien Row > Main.

Configurer le composant d'entrée

  1. Double-cliquez sur le composant tRowGenerator pour ouvrir son éditeur.

  2. Dans l'éditeur, cliquez sur le bouton [+] pour ajouter quatre colonnes : number, txt, date et flag.

  3. Définissez le schéma en paramétrant ces quatre colonnes conformément à la capture d'écran précédente.

  4. Dans la colonne Functions, sélectionnez la fonction [...] dans la liste de chaque colonne.

  5. Dans la colonne Parameters, saisissez 10 paramètres différents pour chaque colonne. Ces 10 paramètres correspondent aux données qui seront retournées de manière aléatoire lors de l'exécution du tRowGenerator.

  6. Cliquez sur OK pour valider vos changements et fermer l'éditeur.

Configurer le composant tJavaFlex

  1. Double-cliquez sur le composant tJavaFlex pour paramétrer ses propriétés.

  2. Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent.

  3. Dans le champ Start code, saisissez le code qui sera exécuté lors de la phase d'initialisation. Ici, le code indique l'initialisation du composant tJavaFlex en affichant le message START et définit une variable qui sera utilisée par la suite dans le code Java :

    System.out.println("## START\n#");
    int i = 0;

  4. Dans le champ Main code, saisissez le code qui sera appliqué pour chaque ligne de données. Ici, l'objectif est d'indiquer le numéro de la ligne en partant de 0, puis afficher le numéro et le texte aléatoire que vous mettez en majuscules et la date aléatoire définis dans le tRowGenerator. Ensuite, créez une condition affichant si le statut est true (vrai) ou false (faux) et incrémentez le numéro de la ligne :

    System.out.print(" row" + i + ":");
    System.out.print("# number:" + row1.number);
    System.out.print (" | txt:" + row1.txt.toUpperCase());
    System.out.print(" | date:" + row1.date);
    if(row1.flag) System.out.println(" | flag: true");
    else  System.out.println(" | flag: false");
    
    i++;

    Avertissement

    Dans le champ Main code, "row1" correspond au nom du lien qui sort du tJavaFlex. Si vous renommez ce lien, il faut penser à modifier le code de ce champ.

  5. Dans le champ End code, saisissez le code qui sera exécuté lors de la phase de clôture. Ici, le code indique la fin de l'exécution du composant tJavaFlex en affichant le message END :

    System.out.println("#\n## END");

Sauvegarder et exécuter le Job

  1. Enregistrez votre Job en appuyant sur Ctrl+S.

  2. Appuyez sur F6 ou cliquez sur Run dans l'onglet Run pour l'exécuter.

La console affiche les données générées aléatoirement et modifiées à l'aide du code Java dans le tJavaFlex.

Scénario 3: Utiliser le tJavaFlex pour afficher le contenu d'un fichier à partir d'un schéma dynamique

Ce scénario décrit un Job à trois composants. Le Job utilise du code Java via un composanttJavaFlex afin d'afficher le contenu d'un fichier en cours de transfert de la source à la cible. Comme tous les composants de ce Job supportent le schéma dynamique, vous pourrez utiliser cette option afin de gagner du temps, sans avoir à configurer chaque colonne du schéma.

Construire le Job

  1. Déposez un tFileInputDelimited, un tJavaFlex et un tFileOutputDelimited de la Palette dans l'espace de modélisation graphique.

  2. Reliez les composants avec des liens Row > Main.

  3. Nommez les composants selon leur rôle dans le Job.

Configurer les composants d'entrée et de sortie

  1. Double-cliquez sur le tFileInputDelimited, ici nommé Source, pour afficher sa vue Basic settings, dans laquelle vous pouvez définir les propriétés du composant.

    Avertissement

    L'option de schéma dynamique n'est supportée qu'en mode Built-In et requiert que le fichier d'entrée ait une ligne d'en-tête.

  2. Dans le champ File name/Stream, saisissez le chemin d'accès au fichier d'entrée entre guillemets doubles, ou parcourez votre système jusqu'au fichier en cliquant sur le bouton [...] .

  3. Dans le champ Header, saisissez 1 pour définir la première ligne du fichier en tant qu'en-tête.

  4. Cliquez sur le bouton [...] à côté de Edit schema pour ouvrir la boîte de dialogue [Schema].

  5. Cliquez sur le bouton [+] pour ajouter une colonne, nommez-la dyna comme dans cet exemple et, dans la liste Type, sélectionnez Dynamic. Cette colonne dynamique va récupérer les colonnes FirstName, LastName et Address du fichier d'entrée.

  6. Cliquez sur OK pour valider les changements et fermer la boîte de dialogue.

  7. Double-cliquez sur le tFileOutputDelimited, appelé ici Target, pour afficher sa vue Basic settings, dans laquelle vous pouvez paramétrer les propriétés du composant.

  8. Spécifiez le chemin d'accès au fichier de sortie dans le champ File Name.

  9. Cochez la case Include Header pour inclure l'en-tête dans le fichier de sortie. Laissez les autres paramètres tels qu'ils sont.

Configurer le composant tJavaFlex

  1. Double-cliquez sur le tJavaFlex pour afficher sa vue Basic settings, dans laquelle vous pouvez paramétrer les propriétés du composant.

  2. Cliquez sur Sync columns pour vous assurer que le schéma a été correctement récupéré du composant précédent.

  3. Dans le champ Start code, saisissez le code suivant :

    System.out.println("Content of file being transferred:\n");
  4. Dans le champ Main code, saisissez le code qui sera appliqué à chaque ligne de données.

    Dans cet exemple, vous voulez afficher le contenu d'un fichier source à partir d'une colonne d'un schéma dynamique défini :

    System.out.println(row1.dyna);

    Avertissement

    Dans le champ Main code , "row1" correspond au nom du lien sortant de tJavaFlex. Si vous renommez le lien, vous devrez modifier le code.

  5. Dans le champ End code, saisissez le code qui sera exécuté dans la phase de clôture.

    Dans cet exemple, le code indique la fin de l'exécution du composant tJavaFlex en affichant le message "End of file" :

    System.out.println("\nEnd of file");

Sauvegarder et exécuter le Job

  1. Sauvegardez votre Job en appuyant sur Ctrl+S.

  2. Exécutez le Job en appuyant sur F6 ou en cliquant sur Run dans l'onglet Run.

    La console affiche le contenu du fichier d'entrée. Comme la case Data Auto propagate est cochée par défaut, le contenu du fichier est transférés à l'identique vers le composant de sortie.