tAdvancedFileOutputXML - 6.1

Composants Talend Open Studio Guide de référence

EnrichVersion
6.1
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

Propriétés du tAdvancedFileOutputXML

Famille du composant

File/Output ou XML

Fonction

Le composant tAdvancedFileOutputXML transmet des données vers un fichier de type XML et propose une interface de gestion des boucles et des Group by si nécessaire.

Objectif

Le tAdvancedFileOutputXML crée un fichier XML contenant les valeurs des données définies dans l'arborescence XML.

Basic settings

Property type

Peut être Built-in ou 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].

 

 

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

 

 

Repository : Sélectionnez le fichier de propriétés du composant. Les champs suivants sont alors pré-remplis à l'aide des données collectées.

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 Talend 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 pus 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 si 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.

 

Configure XML tree

Ouvre l'interface d'aide à la création du fichier XML. Pour plus d'informations sur l'interface, consultez Définir un arbre XML.

 

Schema et Edit Schema

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

 

 

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 est stocké dans le Repository. Ainsi, il peut être réutilisé dans divers projets et Job designs. 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.

 

Append the source xml file

Cochez cette option pour ajouter de nouvelles lignes à la fin de votre fichier source XML.

 

Generate compact file

Cochez cette case pour générer un fichier ne comprenant aucun espace vide ni aucun séparateur de ligne. L'ensemble des éléments se présente alors sur une ligne unique, ce qui permet de réduire le poids du fichier.

 

Include DTD or XSL

Cochez cette case pour ajouter la déclaration DOCTYPE indiquant le nom de l'élément racine et le chemin d'accès et le nom du fichier DTD ou pour ajouter l'instruction de traitement indiquant le type de feuille de style (telle que les XSL) utilisée et son chemin d'accès et nom.

DTD : saisissez le nom de l'élément racine dans le champ Root Element et saisissez le chemin d'accès et le nom du fichier DTD dans le champ File Name.

XSL : saisissez le type de feuille de style dans le champ Type et saisissez le chemin d'accès et le nom du fichier dans le champ File Name.

Advanced settings

Split output in several files

Si le fichier XML de sortie est lourd, vous pouvez le scinder en plusieurs fichiers en définissant un certain nombre de lignes par fichier.

 Trim Data

Cette case est activée lorsque vous utilisez le mode de génération dom4j. Cochez cette case pour supprimer les espaces en début et en fin de valeur d'un élément XML.

 

Create directory only if not exists

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

 

Create empty element if needed

Cette case est cochée par défaut. Si le contenu de la colonne Associated Column est nul ou si aucune colonne n'est associée au nœud XML, cette option créera une balise ouvrante et une balise fermante aux endroits prévus.

 

Create attribute even if its value is NULL

Cochez cette case pour générer l'attribut de la balise XML pour la colonne d'entrée associée dont la valeur est null.

 

Create attribute even if it is unmapped

Cochez cette case pour générer l'attribut de la balise pour la colonne d'entrée associée non mappée.

 

Create associated XSD file

Si l'un des éléments XML est associé à un espace de nommage, cette option créera le fichier XSD correspondant.

Note

Pour utiliser cette option, vous devez sélectionner le mode de génération Dom4J dans la liste Generation mode.

 

Add Document type as node

Cochez cette case pour ajouter des colonnes de type Document dans le nœud au lieu d'échapper des chaînes de caractère dans le fichier XML de sortie.

Cette case apparaît uniquement lorsque le mode de génération est configuré à Slow and memory-consuming (Dom4j) dans l'onglet Advanced settings.

 

Advanced separator (for number)

Cochez cette option pour modifier les séparateurs utilisés pour les nombres :

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

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

 

Generation mode

Sélectionnez le mode de génération correspondant à votre mémoire disponible. Les modes disponibles sont :

  • Lent et consommateur de mémoire (Slow and memory-consuming - Dom4J).

    Note

    Cette option vous permet d'utiliser Dom4J pour traiter des fichiers XML très complexes.

  • Rapide et peu consommateur de mémoire (Fast with low memory consumption).

Lorsque la case Append the source xml file, dans la vue Basic settings est cochée, ce champ disparaît car le mode de génération dom4j est automatiquement sélectionné.

 

Encoding

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

 

Don't generate empty file

Cochez cette case pour annuler la génération du fichier si celui-ci est vide.

 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log du Job, aussi bien au niveau du Job qu'au niveau de chaque 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 traitées. 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

Utilisez ce composant pour créer un fichier XML à partir des données transmises par d'autres composants via une connexion de type Row.

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

Définir un arbre XML

Double-cliquez sur le composant tAdvancedFileOutputXML pour ouvrir l'interface dédiée ou cliquez sur le bouton [...] du champ Configure Xml Tree de l'onglet Basic settings dans la vue Component.

Le champ Schema List de la zone Linker Source, à gauche de l'interface, contient toutes les colonnes du flux d'entrée (à condition que le flux d'entrée soit connecté au composant tAdvancedFileOutputXML).

A droite de l'interface, dans la zone Linker Target, définissez la structure XML que vous souhaitez obtenir en sortie.

Vous pouvez la créer manuellement ou tout simplement importer la structure XML. Puis importez les colonnes du schéma d'entrée dans l'élément de l'arbre XML correspondant.

Importer un arbre XML

Le meilleur moyen de renseigner l'arbre XML est d'importer un fichier XML bien formé.

  1. Renommez la balise racine qui s'affiche par défaut dans le panneau XML tree, en cliquant sur celle-ci.

  2. Dans la colonne XML Tree, cliquez-droit sur le champ root tag pour afficher le menu contextuel.

  3. Dans le menu, sélectionnez Import XML tree.

  4. Sélectionnez le fichier à importer et cliquez sur OK.

    Note

    • Vous pouvez importer la structure XML d'un fichier au format XML, XSD et DTD.

    • Lors de l'import d'une structure XML d'un fichier XSD, vous pouvez choisir un élément comme la racine de votre arbre XML.

La colonne XML Tree est donc automatiquement renseignée avec les éléments. Vous pouvez supprimer et ajouter des éléments ou des sous éléments à l'arbre :

  1. Sélectionnez l'élément adéquat dans l'arbre.

  2. Cliquez-droit pour faire apparaître le menu contextuel.

  3. Sélectionnez Delete pour supprimer la sélection de l'arbre ou sélectionnez l'option adéquate parmi les suivantes : Add sub-element, Add attribute, Add namespace pour enrichir l'arbre.

Créer manuellement l'arbre XML

Si vous ne possédez pas de structure XML déjà définie, vous pouvez la créer manuellement.

  1. Dans la colonne XML Tree, cliquez une fois sur le champ root tag pour le renommer.

  2. Cliquez-droit sur ce champ pour afficher le menu contextuel.

  3. Dans le menu, sélectionnez Add sub-element pour créer le premier élément de la structure.

Vous pouvez aussi ajouter un attribut ou un élément enfant à n'importe quel élément de l'arbre ou supprimer n'importe quel élément de l'arbre.

  1. Sélectionnez l'élément adéquat dans l'arbre que vous venez de créer.

  2. Cliquez-droit à gauche du nom de l'élément pour afficher le menu contextuel.

  3. Dans le menu, sélectionnez l'option adéquate parmi les suivantes : Add sub-element, Add attribute, Add namespace ou Delete.

Mapping de données XML

Une fois votre arbre XML créé, vous pouvez alimenter chaque élément ou sous-élément XML avec les colonnes du flux d'entrée dans la colonne Related Column :

  1. Cliquez sur une des entrées de la colonne Schema List.

  2. Glissez-la dans le sous-élément correspondant à droite.

  3. Relâchez-la pour que le mapping soit effectif.

Une flèche bleue apparaît pour illustrer ce mapping. S'il est disponible, utilisez le bouton Auto-Map situé en bas à gauche de l'interface, il permet d'effectuer cette opération automatiquement.

Vous pouvez déconnecter n'importe quel mapping de n'importe quel élément de l'arbre XML :

  1. Sélectionnez l'élément de l'arbre XML que vous souhaitez déconnecter de sa source respective.

  2. Cliquez-droit à gauche de son nom pour afficher le menu contextuel.

  3. Sélectionnez Disconnect linker.

La flèche bleue disparaît.

Définir le statut du nœud

Définir l'arbre XML et le transfert de données ne suffit pas. Vous devez aussi définir l'élément sur lequel la boucle est effectuée et si nécessaire l'élément à partir duquel le regroupement est effectué.

Elément Boucle

L'élément Boucle permet de définir l'élément objet d'une itération. L'élément Boucle est généralement un générateur de lignes.

Pour définir un élément comme un élément Boucle :

  1. Sélectionnez l'élément adéquat dans l'arbre XML.

  2. Cliquez-droit à gauche du nom de l'élément pour afficher le menu contextuel.

  3. Sélectionnez l'option Set as Loop Element.

La colonne Node Status affiche le nouveau statut sélectionné.

Note

Il ne peut y avoir qu'un seul élément Boucle à la fois.

Elément Group

L'élément Group est optionnel, il représente un élément constant sur lequel est effectuée une fonction Groupby. L'élément Group ne peut être défini que si un élément Boucle a été préalablement défini.

Lorsque vous utilisez un élément Group, les lignes doivent être triées pour pouvoir être regroupées par le nœud sélectionné.

Pour définir un élément comme élément Group :

  1. Sélectionnez l'élément adéquat dans l'arbre XML.

  2. Cliquez-droit à gauche du nom de l'élément pour afficher le menu contextuel.

  3. Sélectionnez l'option Set as Group Element.

La colonne Node Status affiche le nouveau statut sélectionné et tout autre statut de regroupement est automatiquement défini, si nécessaire.

Une fois le mapping terminé, cliquez sur OK pour valider les paramètres et continuez la configuration de votre Job.

Scénario : Créer un fichier XML à l'aide d'une boucle

Le scénario suivant décrit la création d'un fichier XML à partir d'un fichier plat trié contenant une vidéothèque.

Configurer le fichier source

  1. Dans la Palette de composants, cliquez sur les composants tFileInputDelimited et tAdvancedFileOutputXML et déposez-les dans l'espace de modélisation.

  2. Sinon, si vous avez déjà créé une métadonnée contenant la description du fichier d'entrée dans le nœud Metadata du Repository, alors vous pouvez cliquer-déposer directement cette métadonnée dans l'espace de modélisation pour paramétrer automatiquement le flux d'entrée.

  3. Cliquez-droit sur le composant d'entrée et reliez-le au composant tAdvancedFileOutputXML à l'aide d'une connexion de type Row Main.

  4. Sélectionnez le composant tFileInputDelimited et paramétrez ses propriétés dans la vue Component en bas de la fenêtre du Studio.

  5. Dans la liste déroulante Property Type, sélectionnez l'option Repository si la description de votre fichier est stockée dans une métadonnée du Repository. Si vous cliquez-déposez le composant directement à partir de la métadonnée, vous n'aurez pas besoin de modifier ses propriétés.

    Sinon, sélectionnez l'option Built-In et renseignez manuellement les champs de l'onglet Basic settings.

  6. Le fichier d'entrée contient les colonnes suivantes, séparées par des points-virgules : id, name, category, year, language, director et cast.

    Dans cette exemple, le champ Cast regroupe différentes valeurs et id s'incrémente lorsque l'on change de film.

  7. Si nécessaire, définissez le schéma du tFileDelimitedInput en fonction de la structure du fichier.

  8. Une fois que vous avez vérifié que le schéma du fichier d'entrée correspond à vos attentes, cliquez sur OK pour valider.

Configurer la sortie XML et le mapping

  1. Puis sélectionnez le composant tAdvancedFileOutputXML et cliquez sur la vue Component pour paramétrer ses propriétés, ainsi que le mapping dans l'onglet Basic settings. Notez que vous pouvez directement double-cliquer sur le composant pour ouvrir l'interface de mapping.

  2. Dans le champ File Name, sélectionnez le fichier qui sera écrit à la fin du Job, s'il existe déjà ou saisissez le chemin d'accès et le nom du fichier qui seront créés automatiquement pour la sortie.

    Par défaut, le schéma (description du fichier) est automatiquement propagé à partir du flux d'entrée. Mais vous pouvez le modifier si nécessaire.

  3. Puis cliquez sur le bouton [...] ou double-cliquez sur le composant tAdvancedFileOutputXML dans l'espace de modélisation pour ouvrir l'éditeur de mapping.

    Les colonnes du schéma du fichier d'entrée sont listées à gauche de l'interface.

  4. A droite de l'interface, configurez l'arbre XML afin qu'il reflète la structure du fichier de sortie.

    Vous pouvez soit créer la structure nœud par nœud. Pour plus d'informations sur la création manuelle de l'arbre XML, consultez Définir un arbre XML.

    Dans cet exemple, un modèle XML est utilisé pour renseigner automatiquement l'arbre XML.

  5. Cliquez-droit sur le champ root tag qui apparaît par défaut et sélectionnez l'option Import XML tree à la fin des options du menu contextuel.

  6. Dans la fenêtre [Ouvrir], sélectionnez le fichier XML à importer et cliquez sur OK pour valider l'import.

    Note

    Vous pouvez importer une arborescence XML à partir de fichiers au format XML, XSD et DTD.

  7. Puis cliquez-déposez chaque champ de la colonne Schema List vers son élément correspondant dans l'arbre XML de la colonne XML tree tel que décrit dans Mapping de données XML.

    Le mapping apparaît sous la forme d'une flèche bleue entre la zone de gauche et celle de droite.

    Enfin, dans la colonne Node Status, définissez le statut du nœud sur lequel la boucle est effectuée. Dans cet exemple, l'élément Cast correspondant à l'élément Boucle puisque les données de ce champ dans le fichier d'entrée ne sont jamais les mêmes.

    Cliquez-droit sur l'élément Cast de l'arbre XML et sélectionnez l'option Set as loop element.

  8. Pour regrouper les données par film, l'élément Movie doit aussi être défini comme élément Group.

    Cliquez-droit sur le nœud parent Movie de l'arbre XML et sélectionnez l'option Set as group element.

    Le statut sélectionné paraît sur la ligne de l'élément correspondant dans la colonne Node Status.

  9. Cliquez sur OK pour valider la configuration.

  10. Appuyez sur F6 pour exécuter le Job.

Le fichier XML de sortie affiche la structure telle qu'elle a été définie.