tFileList - 6.3

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 ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le composant tFileList fait une boucle sur les fichiers et/ou les dossiers d'un répertoire donné.

Objectif

Le tFileList récupère un groupe de fichiers et/ou de dossiers suivant un masque donné et fait une boucle sur chacun d'eux.

Propriétés du tFileList

Famille du composant

File/Management

 

Basic settings

Directory

Chemin d'accès au répertoire de fichiers.

 

FileList Type

Sélectionnez à partir de la liste déroulante le type de source d'entrée utilisé : Files pour des fichiers, Directories pour des répertoires ou Both pour les deux types.

 

Include subdirectories

Cochez cette case si le ou les répertoires sélectionné(s) contiennent des sous-dossiers.

 

Case Sensitive

Cochez cette case pour créer un filtre selon la casse des noms des fichiers.

 

Generate Error if no file found

Cochez cette case pour être averti par un message d'erreur que la recherche de fichier n'a pas abouti.

 

Use Glob Expressions as Filemask (Unchecked means Perl5 Regex Expressions)

Cette case est cochée par défaut et permet de filtrer les résultats à l'aide d'expressions globales (Glob Expressions). Décochez la case pour filtrer les résultats à l'aide d'expressions de type regex Perl5.

 

Files

Cliquez sur le bouton [+] pour ajouter des lignes de filtre :

Filemask : entrez un nom de fichier ou masque de fichier utilisant un caractère spécial ou une expression régulière.

 

Order by

Les dossiers sont listés en premier, puis viennent ensuite les fichiers. Vous pouvez définir les priorités des dossiers et des fichiers de différentes manières :

By default : par ordre alphabétique, par dossier puis par fichier,

By file name :par ordre alphabétique ou ordre alphabétique inversé,

By file size : du plus petit léger au plus lourd ou du plus lourd au plus léger,

By modified date : du plus récent au plus ancien ou du plus ancien au plus récent.

Note

Lorsque vous sélectionnez l'option By file name, si deux fichiers ont le même nom, le classement s'effectuera via l'option By modified date. Si vous choisissez l'option By file size, et que les fichiers font le même poids, ils seront classés selon l'option By file name. Si vous sélectionnez l'option By modified date et que la date de modification est la même pour deux fichiers, alors ils seront classés selon l'option By file name.

 

Order action

Choisissez de classer par ordre :

ASC : ordre alphabétique / du plus petit au plus grand / du plus ancien au plus récent.

DESC : à l'inverse de l'ordre alphabétique / du plus grand au plus petit / du plus ancien au plus récent.

Advanced settings Use Exclude Filemask

Cochez cette case pour activer le champ Exclude Filemask afin d'exclure les conditions de filtre basées sur le type de fichier : Exclude Filemask : Renseignez le champ en saisissant les types de fichier devant être exclus du tableau Files de la vue Basic settings.

Note

Les types de fichier dans ce champ doivent être entourés de guillemets doubles et séparés par des virgules.

  Format file path to slash (/) style (useful on Windows) Cochez cette case afin de formater le chemin d'accès au fichier en insérant des barres obliques (/), option utile sous Windows.

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du Job, ainsi qu'au niveau de chaque composant.

Utilisation

Le composant tFileList fournit une liste de fichiers d'un répertoire donné sur lequel il fait une boucle.

Global Variables

CURRENT_FILE : nom du fichier courant. Cette variable est une variable Flow et retourne une chaîne de caractères.

CURRENT_FILEPATH : nom du fichier courant ainsi que son chemin d'accès. Cette variable est une variable Flow et retourne une chaîne de caractères.

CURRENT_FILEEXTENSION : extension du fichier courant. Cette variable est une variable Flow et retourne une chaîne de caractères.

CURRENT_FILEDIRECTORY : répertoire du fichier courant. Cette variable est une variable Flow et retourne une chaîne de caractères.

NB_FILE : nombre de fichiers itérés. Cette variable est une variable Flow et retourne un entier.

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.

Connections

Liens de sortie (de ce composant à un autre) :

Row : Iterate.

Trigger : OnSubjobOk, OnSubjobError, OnComponentOk, OnComponentError.

Les liens d'entrée (d'un autre composant à celui-ci) :

Row : Iterate.

Trigger : Run If, OnSubjobOk, OnSubjobError, Synchronize, Parallelize.

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

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 : Itération sur un répertoire

Le scénario suivant décrit un Job de trois composants, qui a pour objectif de répertorier les fichiers d'un répertoire donné, de lire chaque fichier par itération, de sélectionner les données délimitées et d'afficher ces données en sortie dans la console Run.

Déposer et relier les composants

  1. Cliquez et déposez les composants suivants : tFileList, tFileInputDelimited et tLogRow dans l'espace de modélisation.

  2. Cliquez-droit sur le composant tFileList et connectez-le au composant tFileInputDelimited via une connexion de type Row Iterate. Puis connectez le tFileInputDelimited au tLogRow à l'aide d'une connexion de type Row Main.

Configurer les composants

  1. Sélectionnez le composant tFileList et cliquez sur l'onglet Basic settings :

  2. Dans le champ Directory, indiquez le chemin d'accès des fichiers à traiter. Pour faire apparaître ce chemin d'accès dans le Job lui-même, utilisez le nom de champ (__DIRECTORY__) qui apparaît en bulle info lorsque vous passez le souris sur le champ Directory. Saisissez cette référence dans le champ Label Format de l'onglet View.

  3. Dans le champ FileList Type, sélectionnez l'option Files.

  4. Définissez le champ Case sensitive sur Yes pour prendre la casse en compte dans cet exemple.

  5. Laissez la case Use Glob Expressions as Filemask cochée si vous utilisez des expressions globales pour filtrer les fichiers et définissez un masque de fichier dans le champ Filemask.

  6. Double-cliquez sur le tFileInputDelimited afin d'ouvrir sa vue Basic settings et définissez ses propriétés.

  7. Dans le champ File Name, nommez le fichier à l'aide d'une variable contenant son chemin d'accès, tel que vous l'avez renseigné dans les propriétés du tFileList. Appuyez sur Ctrl+Espace pour accéder à la liste d'autocomplétion des variables et sélectionnez la variable globale ((String)globalMap.get("tFileList_1_CURRENT_FILEPATH")).

  8. Renseignez les autres champs comme pour un fichier délimité tFileInputDelimited standard. Voir également : tFileInputDelimited.

  9. Sélectionnez le composant de sortie tLogRow et renseignez le séparateur de champs qui s'affichera dans la console de l'onglet Run. Voir également : Propriétés du tLogRow.

Sauvegarder et exécuter le Job

Appuyez sur Ctrl+S pour sauvegarder votre Job et appuyez sur F6 pour l'exécuter.

L'itération s'effectue sur le répertoire défini. Chacun des fichiers contenus dans ce répertoire est lu. Puis les données délimitées sont transmises au composant de sortie qui les affiche dans la console Log de la vue Run.

Scénario 2 : Trouver des fichiers dupliqués entre deux dossiers

Le scénario suivant décrit un Job qui fait une boucle sur deux dossiers, transforme les résultats de l'itération en flux de données afin d'obtenir une liste de noms de fichiers puis affiche les doublons dans la console Run. Ce scénario peut servir de préparation pour la fusion de deux dossiers par exemple.

Déposer et relier les composants

  1. Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : deux tFileList, deux tIterateToFlow, deux tFileOutputDelimited, un tFileInputDelimited, un tUniqRow et un tLogRow.

  2. Reliez le premier tFileList au premier tIterateToFlow à l'aide d'un lien Row > Iterate et reliez le premier tIterateToFlow au premier tFileOutputDelimited à l'aide d'un lien Row > Main afin de former le premier sous-Job.

  3. Reliez le second tFileList au second tIterateToFlow à l'aide d'un lien Row > Iterate et reliez le second tIterateToFlow au second tFileOutputDelimited à l'aide d'un lien Row > Main afin de former le deuxième sous-Job.

  4. Reliez le tFileInputDelimited au tUniqRow à l'aide d'un lien Row > Main et reliez le tUniqRow au tLogRow à l'aide d'un lien Row > Duplicates afin de former le troisième sous-Job.

  5. Reliez les trois sous-Jobs à l'aide de liens Trigger > On Subjob Ok afin qu'ils soient déclenchés l'un après l'autre. Nommez ensuite les composants afin de mieux identifier leur rôle dans le Job.

Configurer les composants

  1. Dans le champ Directory de la vue Basic settings du premier tFileList, saisissez le chemin vers le premier dossier dans lequel vous souhaitez lire le nom des fichiers, E:/DataFiles/DI/images dans ce scénario. Laissez les autres paramètres tels qu'ils sont.

  2. Double-cliquez sur le premier tIterateToFlow afin d'afficher sa vue Basic settings.

  3. Double-cliquez sur le bouton [...] situé à côté de Edit schema afin d'ouvrir la boîte de dialogue [Schema]. Définissez le schéma du fichier texte dans lequel le second composant doit écrire les noms des fichiers. Une fois fait, cliquez sur OK afin de fermer la boîte de dialogue et propager les changements au composant suivant.

    Dans cet exemple, le schéma contient une seule colonne : Filename.

  4. Dans le champ Value de la table Mapping, appuyez sur Ctrl+Espace afin d'ouvrir la liste d'autocomplétion des variables. Sélectionnez la variable globale ((String)globalMap.get("tFileList_1_CURRENT_FILE")) afin de lire le nom de chaque fichier du dossier d'entrée. Ce dernier sera ensuite inséré dans un flux de données et passé au composant suivant.

  5. Dans le champ File Name de la vue Basic settings du premier tFileOutputDelimited, saisissez le chemin vers le fichier texte contenant les noms des fichiers provenant du flux entrant, D:/temp/tempdata.csv dans cet exemple. La configuration du premier sous-Job est ainsi terminée.

  6. Configurez le deuxième sous-Job de la même manière que le premier sous-Job. Cependant :

    • Dans le champ Directory de la vue Basic settings du second tFileList, saisissez le chemin vers l'autre dossier dans lequel vous souhaitez lire les noms des fichiers, E:/DataFiles/DQ/images dans ce scénario.

    • Dans la vue Basic settings du second tFileOutputDelimited, cochez la case Append afin que les noms des fichiers précédemment écrits dans le fichier texte ne soit pas écrasés.

  7. Dans le champ File name/Stream de la vue Basic settings du tFileInputDelimited, saisissez le chemin vers le fichier texte contenant la liste de noms de fichiers, D:/temp/tempdata.csv dans ce scénario. Définissez le schéma du fichier qui, dans le présent exemple, contient une seule colonne, Filename.

  8. Dans la vue Basic settings du tUniqRow, cochez la case Key attribute pour la colonne, Filename in this exmaple.

  9. Dans la vue Basic settings du tLogRow, sélectionnez l'option Table (print values in cells of a table) pour un meilleur affichage des résultats d'exécution du Job.

Exécuter le Job

  1. Appuyez sur Ctrl+S afin de sauvegarder le Job.

  2. Cliquez sur Run ou appuyez sur F6 afin d'exécuter le Job.

    Tous les fichiers dupliqués entre les deux dossiers sélectionnés sont affichés dans la console.

Pour d'autres scénarios utilisant le tFileList, tFileCopy.