tWriteDynamicFields - 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 tWriteDynamicFields

Famille du composant

Processing/Fields

 

Fonction

Le composant tWriteDynamicFields crée une colonne dynamique en sortie à partir des colonnes d'entrée.

Objectif

Le composant tWriteDynamicFields permet de créer un schéma dynamique à partir des colonnes d'entrée du composant.

Basic settings

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs 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 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].

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

 

 

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

 

 

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

Advanced 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.

NB_LINE : nombre de lignes lues par un composant d'entrée ou passées à un composant de sortie. Cette variable est une variable After et retourne un entier.

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é comme composant intermédiaire. Il requiert un flux d'entrée et un flux de sortie pour fonctionner.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Scénario 1 : Créer une colonne dynamique et en extraire son contenu

Ce scénario Java comprend cinq composants et a pour but de créer une colonne de type Dynamic à partir d'un schéma ainsi que d'extraire les colonnes composant cette colonne dynamique. Les résultats de ces transformations sont affichés dans la console.

Construire le Job

  1. De la Palette dans l'espace de modélisation graphique, glissez-déposez les composants suivants :

    - un tRowGenerator pour générer un flux contenant des informations clients,

    - un tWriteDynamicFields pour remplacer des colonnes par une colonne de type Dynamic,

    - deux tLogRow pour afficher les résultats dans la console,

    - un tExtractDynamicFields pour extraire le contenu de la colonne dynamique.

  2. Connectez le tRowGenerator au tWriteDynamicFields à l'aide d'un lien Row > Main.

  3. Connectez le tWriteDynamicFields au premier tLogRow à l'aide d'un lien Row > Main.

  4. Reliez le tLogRow au composant tExtractDynamicFields à l'aide d'un lien Row > Main.

  5. Reliez le tExtractDynamicFields au second tLogRow à l'aide d'un lien Row > Main.

  6. Renommez les deux tLogRow en double-cliquant sur ces composants.

    Saisissez leur nouveau nom, respectivement dynamicColumn et standard column dans cet exemple.

Configurer les composants

  1. Dans l'espace de modélisation graphique, double-cliquez sur le composant tRowGenerator afin d'ouvrir son éditeur.

  2. Cliquez sept fois sur le bouton [+] afin d'ajouter sept colonnes au schéma. Nommez-les respectivement idfirstNamelastNamestreetcityStates et otherData.

  3. Dans la colonne Type, sélectionnez Integer pour le champ id et String pour les autres champs.

    Dans la colonne Functions, sélectionnez, pour chaque colonne du schéma, la fonction que vous souhaitez appliquer.

    Cliquez sur OK pour valider la configuration et fermer l'éditeur.

    Une fenêtre pop-up s'ouvre et vous propose de propager les modifications. Cliquez sur Yes (Oui).

  4. Dans l'espace de modélisation graphique, double-cliquez sur le composant tWriteDynamicFields afin d'afficher sa vue Basic settings.

    Cliquez sur le bouton [...] correspondant au champ Edit schema pour configurer le schéma du composant.

  5. Dans l'éditeur du schéma, cliquez sur la colonne otherData puis sur afin de déposer la colonne dans la sortie.

    Ainsi, cette colonne sera affichée en sortie sans être incluse dans la colonne dynamique.

  6. Cliquez sur le bouton [+] de la zone de droite afin d'ajouter une colonne.

    Nommez-la columnDynamic et configurez son Type comme Dynamic.

    Avertissement

    La colonne dynamique doit être définie dans la dernière ligne du schéma.

    Avertissement

    Le nom des colonnes doit être exactement le même des deux côtés de l'éditeur, sinon les colonnes de sortie ne seront pas reconnues.

  7. Cliquez sur OK pour valider vos modifications et fermer l'éditeur.

    Avertissement

    La fonction de schéma dynamique n'est supportée qu'en mode Built-In.

    Toutes les colonnes ne figurant pas dans la partie droite (sortie) de l'éditeur seront incluses dans la colonne dynamique.

  8. Dans l'espace de modélisation graphique, double-cliquez sur le premier tLogRow afin d'afficher sa vue Basic settings.

    Dans la zone Mode, sélectionnez l'option Table (print value in cells of a table).

  9. Dans l'espace de modélisation graphique, double-cliquez sur le composant tWriteDynamicFields afin d'afficher sa vue Basic settings.

    Cliquez sur le bouton [...] correspondant au champ Edit schema.

  10. Sélectionnez les colonnes de gauche que vous souhaitez ajouter au schéma du composant tExtractDynamicFields et cliquez sur le bouton pour les copier.

    Cliquez sur OK pour fermer l'éditeur.

  11. Dans l'espace de modélisation graphique, double-cliquez sur le composant tExtractDynamicFields afin d'afficher sa vue Basic settings.

    Cliquez sur le bouton [...] correspondant au champ Edit schema.

  12. Dans l'éditeur du schéma, cliquez sur le bouton dans la zone droite afin de coller les colonnes copiées du composant tWriteDynamicFields.

    Dans la zone d'entrée, à gauche, cliquez sur la colonne de type Dynamic puis cliquez sur afin d'ajouter la colonne dynamique au schéma de sortie.

    Cliquez sur OK afin de valider vos modifications et de fermer l'éditeur.

  13. Dans l'espace de modélisation graphique, double-cliquez sur le second tLogRow afin d'afficher sa vue Basic settings.

  14. Dans la zone Mode, sélectionnez l'option Table (print value in cells of a table).

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S afin de sauvegarder votre Job.

  2. Appuyez sur F6 pour l'exécuter.

Le premier tLogRow affiche dans la console la colonne dynamique ainsi que la colonne otherData que vous avez incluse dans le schéma de sortie du composant tWriteDynamicFields.

Le second tLogRow affiche dans la console les colonnes extraites de la colonne dynamique, idfirstName et lastName, la colonne otherData, qui n'a pas été incluse dans la colonne dynamique et la colonne dynamique contenant encore les colonnes n'ayant volontairement pas été extraites.

Scénario 2 : Extraire le contenu d'une colonne dynamique via un tJavaRow

Dans ce scénario, une colonne dynamique est créée via un composant tWriteDynamicFields. Son contenu est extrait par le code personnalisé saisi dans le tJavaRow.

Relier les composants

  1. Déposez un tFixedFlowInput, un tWriteDynamicFields, un tLogRow et un tJavaRow de la Palette dans l'espace de modélisation graphique.

  2. Reliez le tFixedFlowInput au tWriteDynamicFields à l'aide d'un lien Row > Main.

  3. Reliez le tWriteDynamicFields au tLogRow à l'aide d'un lien Row > Main.

  4. Reliez le tLogRow au tJavaRow à l'aide d'un lien Row > Main.

Configurer les composants

  1. Double-cliquez sur le tFixedFlowInput pour ouvrir sa vue Basic settings.

  2. Sélectionnez l'option Use Inline Content (delimited file) dans la zone Mode.

  3. Dans le champ Content, saisissez les données à passer au tWriteDynamicFields, par exemple :

    1;Andy;Doc
    2;Anderson;Dev
  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur de schéma.

  5. Cliquez trois fois sur le bouton [+] pour ajouter trois colonnes, nommées id, name et dept, de type Integer et String, respectivement.

  6. Cliquez sur OK pour valider la configuration et fermer l'éditeur.

  7. Double-cliquez sur le tWriteDynamicFields pour ouvrir sa vue Basic settings.

  8. Cliquez sur le bouton [...] correspondant à Edit schema pour ouvrir l'éditeur de schéma.

  9. Cliquez deux fois sur le bouton [+] dans le panneau de droite afin d'ajouter deux colonnes, respectivement nommées id et dynamic, de type Integer et Dynamic.

    La colonne id contient la valeur de la colonne id du tFixedFlowInput et la colonne dynamic contient les valeurs des colonnes name et dept du tFixedFlowInput.

  10. Cliquez sur OK pour valider la configuration et fermer l'éditeur.

  11. Double-cliquez sur le tLogRow pour ouvrir sa vue Basic settings.

    Sélectionnez l'option Table (print values in cells of a table), dans la zone Mode, pour un affichage optimal des résultats.

  12. Double-cliquez sur le tJavaRow pour ouvrir sa vue Basic settings.

  13. Dans le champ Code, saisissez le code Java pour extraire le contenu de la colonne dynamique dynamic :

    Dynamic columns = row3.dynamic;
     
    for (int i = 0; i < columns.getColumnCount(); i++) {  
        DynamicMetadata columnMetadata = columns.getColumnMetadata(i);  
        System.out.println(columnMetadata.getName() + ": " + 
    columns.getColumnValue(i) + "; " + columnMetadata.getType());
    } 

    La colonne dynamique dynamic du flux row3 est spécifiée pour récupérer les noms, valeurs et types des colonnes qu'elle contient.

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder le Job.

  2. Appuyez sur F6 pour l'exécuter.

    Comme affiché ci-dessus, les colonnes contenues dans la colonne dynamique ont bien été extraites.