tFileOutputDelimited

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for MDM
Talend Open Studio for ESB
task
Qualité et préparation de données
Gouvernance de données
Création et développement
EnrichPlatform
Studio Talend

Fonction

Le composant tFileOutputDelimited transmet des données vers un fichier délimité.

Objectif

Ce composant écrit un fichier délimité contenant des données organisées en fonction du schéma défini.

Propriétés du tFileOutputDelimited

Famille du composant

File/Output

 

Basic settings

Property type

Peut être Built-In ou Repository.

 

 

- Built-In : Propriétés utilisées ponctuellement.

 

 

- Repository : Sélectionnez le fichier dans lequel sont stockées les propriétés du composant.

 

Use Output Stream

Cochez la case pour traiter le flux de données qui vous intéresse. Une fois cochée, le champ Output Stream s'affiche et vous pouvez saisir le flux de données souhaité.

Le flux de données à traiter doit être ajouté au flux afin que ce composant récupère ces données via la variable représentative correspondante.

Cette variable peut être prédéfinie dans votre Studio ou fournie par le contexte ou les composants utilisé(s) avec ce composant. Sinon, vous pouvez la définir manuellement et l'utiliser selon votre Job, par exemple à l'aide d'un tJava ou d'un tJavaFlex.

Afin d'éviter les désagréments de la saisie, vous pouvez sélectionner la variable qui vous intéresse dans la liste d'autocomplétion (Ctrl+Espace) afin de remplir le champ, si cette variable a été correctement définie.

Pour plus d'informations concernant l'utilisation d'un flux, consultez Scénario 2 : Lire les données d'un fichier distant en mode stream.

 

File name

Chemin d'accès et nom du fichier de sortie et/ou variable à utiliser.

Ce champ est indisponible lorsque vous avez coché la case Use Output Stream.

Pour plus d'informations concernant l'utilisation et la définition de variables, consultez le Guide utilisateur du Studio Talend.

 

Row Separator

Saisissez le séparateur à utiliser pour identifier la fin des lignes.

 

Field Separator

Saisissez un caractère, une chaîne de caractères ou une expression régulière pour séparer les champs des données transférées.

 

Append

Cochez cette option pour ajouter de nouvelles lignes à la fin du fichier.

 

Include Header

Cochez cette case pour tenir compte de l'en-tête dans le fichier de sortie.

 

Compress as zip file

Cochez cette case pour compresser en zip le fichier de sortie.

 

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.

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, cliquez sur No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

 

 

Built-In : Le schéma est créé et conservé ponctuellement 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.

 

Sync columns

Cliquez sur ce bouton pour synchroniser le schéma de sortie avec celui d'entrée. La fonction Sync ne s'affiche que si une connexion de type Row est liée au composant de sortie.

Advanced settings

Advanced separator (for numbers)

Cochez cette case pour modifier le séparateur utilisé pour les nombres. Par défaut, le séparateur des milliers est une virgule (,) et le séparateur décimal est un point (.).

Thousands separator : définissez le séparateur utilisé pour les milliers.

Decimal separator : définissez le séparateur utilisé pour les décimaux.

 

CSV options

Cochez cette case pour inclure des paramètres CSV spécifiques comme Escape char et Text enclosure.

 

Create directory if not exists

Cette case est cochée par défaut. Cette option permet de créer le dossier contenant le fichier de sortie s'il n'existe pas déjà.

 

Split output in several files

Si le fichier délimité en sortie est volumineux, vous pouvez le scinder en plusieurs fichiers.

Rows in each output file : saisissez le nombre de lignes pour chaque fichier de sortie.

 

Custom the flush buffer size

Cochez cette case pour personnaliser le nombre de lignes à écrire avant de vider le tampon.

Row Number : Nombre de lignes à écrire avant de vider le tampon.

 

Output in row mode

Cochez cette case pour assurer que l'action de vider le tampon se termine complètement (atomicité), afin que chaque ligne de données reste cohérente en tant qu'ensemble et que les lignes incomplètes de données ne soient jamais écrites dans un fichier.

Cette case est principalement utile lorsque vous utilisez ce composant en multithread.

 

Encoding

Sélectionnez l'encodage à partir de la liste ou sélectionnez Custom et définissez-le manuellement. Ce champ est obligatoire pour la gestion de données de bases de données.

 

Don't generate empty file

Cochez cette case pour empêcher la génération d'un fichier vide.

 

tStatCatcher Statistics

Cochez cette case pour collecter les métadonnées de process du Job, aussi bien au niveau du Job qu'au niveau de chaque composant.

Global Variables

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.

FILE_NAME : nom du fichier traité. Cette variable est une variable Flow et retourne une chaîne de caractères.

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

Utilisez ce composant pour écrire dans un fichier délimité des données récupérées d'autres composants à l'aide d'une connexion de type Row et séparer les champs à l'aide d'un séparateur.

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

Limitation

Du fait d'une incompatibilité de licence, un ou plusieurs Jar requis pour utiliser ce composant ne sont pas fournis. Vous pouvez installer les Jar manquants pour ce composant en cliquant sur le bouton Install dans l'onglet Component. Vous pouvez également trouver les Jar manquants et les ajouter dans l'onglet Modules de la perspective Integration de votre studio. Pour plus d'informations, consultez l'article Installation de modules externes sur Talend Help Center (https://help.talend.com) ou la section décrivant comment configurer le studio, dans le Guide d'installation et de migration Talend.

Scénario 1 : Ecrire des données dans un fichier délimité

Ce scénario est constitué de trois composants et a pour objectif d'extraire certaines données d'un fichier contenant des informations sur les clients (customers) puis de les écrire dans un fichier délimité en sortie.

Dans l'exemple suivant, vous avez enregistré les informations de connexion et les métadonnées dans le Repository afin de faciliter leur réutilisation. Pour plus d'informations sur comment centraliser les données de connexion et autres métadonnées d'un fichier dans le Repository, consultez le Guide utilisateur du Studio Talend.

Déposer et relier les composants

  1. Dans le Repository, ouvrez le nœud File Delimited de la catégorie Metadata. Cliquez sur la métadonnée customers, et déposez-la dans l'espace de modélisation graphique. Une boîte de dialogue s'ouvre et vous demande quel type de composant vous souhaitez déposer.

  2. Cliquez sur tFileInputDelimited puis sur OK. Un composant tFileInputDelimited contenant le nom de votre schéma d'entrée s'affiche dans l'espace de modélisation graphique.

  3. Déposez un composant tMap et un composant tFileOutputDelimited de la Palette dans l'espace de modélisation graphique.

  4. Reliez les composants à l'aide d'un lien Row > Main.

Configurer les composants

Configurer le composant d'entrée

  1. Double-cliquez sur le composant tFileInputDelimited afin d'afficher sa vue Basic settings. Tous les champs sont renseignés automatiquement car vous avez défini votre fichier d'entrée localement.

  2. Si vous ne définissez pas votre fichier d'entrée localement dans la vue Repository, renseignez les détails manuellement après avoir sélectionné Built-in dans la liste Property Type.

  3. Cliquez sur le bouton [...] près du champ File Name et dans la boîte de dialogue de sélection, parcourez le système de fichiers et sélectionnez le fichier d'entrée, dans cet exemple: customer.csv.

    Avertissement

    Si le chemin d'accès du fichier contient des caractères accentués, vous obtiendrez un message d'erreur lors de l'exécution du Job. Pour plus d'informations concernant la procédure à suivre lorsque les accents ne sont pas supportés, consultez le Guide d'installation et de migration Talend.

  4. Dans les champs Row Separator et Field Separator, saisissez respectivement le séparateur de lignes "\n" et le séparateur de champs ";".

  5. Si besoin, définissez dans les champs correspondants le nombre de lignes utilisées dans l'en-tête (Header) et dans le pied-de-page (Footer), puis définissez le nombre de lignes traitées.

    Dans cet exemple, saisissez 6 pour Header et laissez par défaut les champs Footer et Limit.

  6. Dans le champ Schema, le schéma est défini automatiquement sur Repository et votre schéma est déjà défini puisque vous avez stocké votre fichier d'entrée localement pour cet exemple. Sinon, sélectionnez Built-in et cliquez sur le bouton [...] près de Edit Schema pour ouvrir la boîte de dialogue [Schema], dans laquelle vous pouvez définir le schéma d'entrée. Cliquez ensuite sur OK pour fermer la boîte de dialogue.

Configurer le composant de mapping

  1. Double-cliquez sur le tMap afin d'ouvrir son éditeur.

  2. Dans cet éditeur, cliquez sur le bouton en haut à droite pour ouvrir la boîte de dialogue [Add a new output table].

  3. Saisissez un nom pour la table que vous souhaitez créer, row2 dans cet exemple.

  4. Cliquez sur OK pour valider vos modifications et fermer la boîte de dialogue.

  5. Dans la table de gauche (row1), sélectionnez les trois premières lignes (Id, CustomerName et CustomerAddress) en appuyant sur Ctrl, puis glissez-les dans la table de droite.

  6. Dans le Schema editor en bas de l'éditeur, changez le Type de la ligne RegisterTime, dans la table de droite, et passez-le en chaîne de caractères, String.

  7. Cliquez sur OK pour enregistrer les modifications et fermer l'éditeur.

Configurer le composant de sortie

  1. Dans l'espace de modélisation, double-cliquez sur le composanttFileOutputDelimited pour ouvrir sa vue Component et définir ses propriétés.

  2. Dans le champ Property Type, sélectionnez le mode Built-in et renseignez les champs suivants manuellement.

  3. Cliquez sur le bouton [...] correspondant au champ File Name. Dans la boîte de dialogue, indiquez le répertoire de destination et le nom du fichier dans lequel vous voulez écrire des données, ici customerselection.txt.

  4. Pour les champs Row Separator et Field Separator, saisissez respectivement le séparateur de lignes "\n" et le séparateur de champs ";". Ils sont utilisés dans le fichier de sortie pour délimiter les valeurs et les lignes.

  5. Cochez la case Include Header si vous souhaitez récupérer le libellé des colonnes.

  6. Cliquez sur Edit schema et assurez-vous que le schéma est correctement récupéré du schéma d'entrée. Si nécessaire, cliquez sur Sync Columns pour récupérer le schéma du composant précédent.

Sauvegarder et exécuter le Job

  1. Appuyez sur Ctrl+S pour sauvegarder votre Job.

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

    Le fichier créé est délimité par des points-virgules, il ne contient que les colonnes Id, CustomerName et CustomerAddress.

    Les colonnes Id, CustomerName et CustomerAddress sont écrites dans le fichier de sortie défini.

Scénario 2 : Utiliser un flux de sortie pour sauvegarder des données dans un fichier local

Basé sur le scénario précédent, ce scénario sauvegarde les données filtrées dans un fichier local, à l'aide de l'option Output Stream.

Déposer et relier les composants

  1. Déposez un composant tJava de la Palette dans l'espace de modélisation graphique.

  2. Connectez le tJava au tFileInputDelimited à l'aide d'un lien Trigger > On Subjob Ok.

Configurer les composants

  1. Double-cliquez sur le tJava pour ouvrir sa vue Basic settings et configurer ses propriétés.

  2. Dans la zone Code, saisissez la commande suivante :

    new java.io.File("C:/myFolder").mkdirs(); 
    globalMap.put("out_file",new
    java.io.FileOutputStream("C:/myFolder/customerselection.txt",false));

    Note

    Dans ce scénario, la commande utilisée dans la zone Code du tJava va créer un nouveau dossier C:/myFolder dans lequel le fichier de sortie customerselection.txt sera sauvegardé. Vous pouvez personnaliser la commande selon vos besoins.

  3. Double-cliquez sur le tFileOutputDelimited afin d'ouvrir sa vue Basic settings et configurer ses propriétés.

  4. Cochez la case Use Output Stream pour activer le champ Output Stream, dans lequel vous pouvez définir le flux de sortie, à l'aide d'une commande.

    Renseignez le champ Output Stream en saisissant la commande suivante :

    (java.io.OutputStream)globalMap.get("out_file")

    Note

    Vous pouvez personnaliser la commande dans le champ Output Stream en appuyant sur les touches Ctrl+Espace pour utiliser l'auto-complétion ou saisissez votre commande manuellement dans le champ. Dans ce scénario, la commande utilisée dans le champ Output Stream appelle la classe java.io.OutputStream pour écrire le flux de données filtrées dans un fichier local, défini dans la zone Code du composant tJava.

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

  6. Laissez les autres composants tels qu'ils sont.

Sauvegarder et exécuter le Job

  1. Appuyez sur Ctrl+S pour sauvegarder votre Job.

  2. Appuyez sur F6 ou cliquez sur le bouton Run de l'onglet Run pour l'exécuter.

    Les trois colonnes spécifiées, Id, CustomerName et CustomerAddress sont écrites dans le fichier de sortie défini.