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

Famille du composant

Processing/XML

 

Basic settings

Map Editor

Le Map Editor vous permet de définir les propriétés du routage et des transformations du tXMLMap.

Advanced settings

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du Job ainsi 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.

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

Plusieurs utilisations sont possibles, de la simple réorganisation des champs de données aux transformations les plus complexes, telles que le multiplexage et le démultiplexage de données, la concaténation, l'inversion, le filtrage, etc.

Lorsque c'est nécessaire, vous pouvez définir vos sorties pour les flux XML, à l'aide de l'élément "group", de l'élément "aggregate", d'éléments vides et de toute autre fonctionnalité, comme All in one. Pour plus d'informations concernant ces fonctionnalités, consultez le Guide utilisateur du Studio Talend.

Ce composant est utilisé comme composant intermédiaire et correspond parfaitement au processus nécessitant de nombreuses sources de données XML, comme les processus ESB de requête/réponse.

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

Les limites sont les suivantes :

- L'utilisation du composant tXMLMap requiert des connaissances minimales en Java et XML afin d'exploiter au mieux ses fonctionnalités.

- Ce composant est une étape de jonction. Il ne peut donc être ni un composant d'entrée, ni un composant de sortie.

- Au moins un élément de boucle est requis pour chaque flux de données XML.

Les sections suivantes présentent plusieurs scénarios génériques concernant l'utilisation du composant tXMLMap. Si vous souhaitez consulter des exemples spécifiques d'utilisation de ce composant avec les composants ESB afin de construire des services de données, consultez les scénarios des composants suivants :

Si vous souhaitez plus d'informations concernant les principes du mapping de multiples flux d'entrée et de sortie, consultez le Guide utilisateur du Studio Talend.

Scénario 1 : Mapper et transformer des données de source XML

Le scénario suivant crée un Job à trois composants pour mapper et transformer des données provenant d'un fichier source XML, Customer.xml, et générer un flux de sortie XML pouvant être réutilisé dans différents buts, comme, par exemple, pour une requête ESB basée sur la structure de l'arbre XML du fichier Customer_State.xml.

Ces trois composants sont :

  • un tFileInputXML : utilisé pour fournir des données d'entrée au tXMLMap.

  • un tXMLMap : mappe et transforme les flux de données XML en un seul flux de données XML.

  • un tLogRow : utilisé pour afficher les données de sortie.

Le contenu du fichier XML Customer.xml se présentent comme suit :

<?xml version="1.0" encoding="ISO-8859-15"?>
<Customers>
	<Customer RegisterTime="2001-01-17 06:26:40.000">
		<Name>
			<id>1</id>
			<CustomerName>Griffith Paving and Sealcoatin</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>talend@apres91</CustomerAddress>
			<idState>2</idState>
		</Address>
		<Revenue>
			<Sum1>67852</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="2002-06-07 09:40:00.000">
		<Name>
			<id>2</id>
			<CustomerName>Bill's Dive Shop</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>511 Maple Ave. Apt. 1B</CustomerAddress>
			<idState>3</idState>
		</Address>
		<Revenue>
			<Sum1>88792</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="1987-02-23 17:33:20.000">
		<Name>
			<id>3</id>
			<CustomerName>Glenn Oaks Office Supplies</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>1859 Green Bay Rd.</CustomerAddress>
			<idState>2</idState>
		</Address>
		<Revenue>
			<Sum1>1225.</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="1992-04-28 23:26:40.000">
		<Name>
			<id>4</id>
			<CustomerName>DBN Bank</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>456 Grossman Ln.</CustomerAddress>
			<idState>3</idState>
		</Address>
		<Revenue>
			<Sum1>64493</Sum1>
		</Revenue>
	</Customer>
</Customers>

Le contenu du fichier XML Customer_State.xml se présentent comme suit :

<?xml version="1.0" encoding="ISO-8859-15"?>
<customers>
	<customer id="1">
		<CustomerName>Griffith Paving and Sealcoatin</CustomerName>
		<CustomerAddress>talend@apres91</CustomerAddress>
		<idState>2</idState>
	</customer>
	<customer id="2">
		<CustomerName>Bill's Dive Shop</CustomerName>
		<CustomerAddress>511 Maple Ave.  Apt. 1B</CustomerAddress>
		<idState>3</idState>
	</customer>
</customers>

Ajouter et relier les composants

  1. Créez un nouveau Job et ajoutez un composant tFileInputXML, un tXMLMap et un tLogRow en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette.

  2. Nommez le composant tFileInputXML Customers pour mieux identifier sa fonction.

    Note

    Un composant utilisé dans l'espace de modélisation peut être renommé comme vous le souhaitez. Pour plus d'informations concernant le renommage d'un composant, consultez le Guide utilisateur du Studio Talend.

  3. Reliez le composant tFileInputXML nommé Customers au tXMLMap à l'aide d'un lien Row > Main.

  4. Reliez le tXMLMap au tLogRow à l'aide d'un lien Row > *New Output* (Main). Dans la boîte de dialogue qui s'ouvre, saisissez un nom pour le lien de sortie, Customer dans ce scénario.

Configurer le flux d'entrée

  1. Double-cliquez sur le tFileInputXML nommé Customers afin d'afficher sa vue Basic settings.

  2. A côté du champ Edit schema, cliquez sur le bouton [...] afin d'ouvrir l'éditeur du schéma et, dans la boîte de dialogue [Schema], définissez le schéma en ajoutant une colonne Customer de type Document.

    Notez que le type de données Document est essentiel pour tirer parti des fonctionnalités du tXMLMap. Pour plus d'informations concernant ce type de données, consultez le Guide utilisateur du Studio Talend.

  3. Cliquez sur OK pour valider ce changement et fermer la boîte de dialogue. Une ligne est ajoutée automatiquement à la table Mapping.

  4. Dans le champ File name/Stream, parcourez votre système jusqu'au fichier XML source fournissant les données client, ou bien saisissez son chemin d'accès entre guillemets doubles. Dans ce scénario, saisissez "E:/Customer.xml".

  5. Dans le champ Loop XPath query, saisissez une expression XPath entre guillemets doubles pour spécifier le nœud sur lequel la bouche est basée. Dans ce scénario, saisissez /, ce qui signifie effectuer une requête de recherche depuis la racine.

  6. Dans la colonne XPath query de la table Mapping, saisissez entre guillemets doubles les champs à interroger. Dans ce scénario, saisissez ., ce qui signifie que tous les champs du nœud actuel (racine) seront extraits.

  7. Cochez la case Get Nodes dans la colonne de la table Mapping.

    Note

    Afin de construire le flux de données de type Document, il est nécessaire d'obtenir les nœuds de ce composant.

Configurer le tXMLMap pour effectuer des transformations

  1. Double-cliquez sur le composant tXMLMap pour ouvrir le Map Editor.

    Notez que la zone d'entrée est déjà remplie par la structure XML simple par défaut et que la table supérieure est la table principale d'entrée (flux Main).

  2. Dans la table d'entrée row1, cliquez-droit sur le nœud Customer et, dans son menu contextuel, sélectionnez Import From File. Dans la boîte de dialogue qui s'ouvre, parcourez votre système jusqu'au fichier XML source duquel importer la structure XML utilisée par les données reçues par le tXMLMap. Dans ce scénario, le fichier source XML est Customer.xml, le fichier des données d'entrée du composant tFileInputXML nommé Customers.

    Note

    Vous pouvez également importer une arborescence XML à partir d'un fichier XSD. Lors de l'import d'une structure XML d'entrée ou de sortie depuis un fichier XSD, vous pouvez choisir un élément pour en faire la racine de votre structure XML. Pour plus d'informations concernant l'import d'une arborescence XML à partir d'un fichier XSD, consultez le Guide utilisateur du Studio Talend.

  3. Dans la structure importée, cliquez-droit sur le nœud Customer et, dans le menu contextuel, sélectionnez As loop element pour le définir comme élément de boucle.

  4. Dans la partie inférieure du Map Editor, cliquez sur l'onglet Schema editor afin d'afficher la vue correspondante. Du côté droit de cette vue, ajoutez une colonne Customer_States de type Document au schéma Customer. La racine XML correspondante est automatiquement ajoutée à la table de sortie Customer, en haut à droite, dans le flux de sortie.

  5. Dans la table de sortie Customer, cliquez-droit sur le nœud Customer_States, et, dans le menu contextuel, sélectionnez Import From File. Dans la boîte de dialogue qui s'ouvre, parcourez votre système jusqu'au fichier XML duquel importer la structure XML. Dans ce scénario, le fichier est Customer_State.xml.

  6. Cliquez-droit sur le nœud customer et sélectionnez As loop element dans le menu contextuel pour le définir comme élément de boucle.

  7. Dans la table d'entrée row1, cliquez sur le nœud id et glissez-le dans la colonne Expression dans la ligne du nœud @id de la table de sortie Customer.

    Répétez l'opération pour mapper CustomerName à CustomerNameCustomerAddress à CustomerAddress et idState à idState de la table d'entrée à la table de sortie.

    Note

    Dans certains cas, vous pouvez avoir besoin de laisser des éléments vides dans votre arborescence XML de sortie. Dans ce cas, vous pouvez utiliser le tXMLMap pour les gérer. Pour plus d'informations concernant la gestion des éléments vides via le tXMLMap, consultez le Guide utilisateur du Studio Talend.

  8. Cliquez sur la clé anglaise en haut de la table de sortie Customer et configurez la valeur de la propriété All in one à true. Pour plus d'informations concernant la fonctionnalité All in one, consultez le Guide utilisateur du Studio Talend.

  9. Cliquez sur OK pour valider les modifications et fermer le Map Editor.

    Note

    Si vous fermez le Map Editor sans avoir défini les éléments de boucle nécessaires, comme expliqué plus tôt dans ce scénario, l'élément racine est automatiquement défini comme l'élément de boucle.

Configurer le tLogRow pour afficher les informations client

  1. Double-cliquez sur le composant tLogRowpour ouvrir sa vue Basic settings.

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

Sauvegarder et exécuter le Job

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

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

    Comme affiché ci-dessus, les informations clients transformées sont affichées dans la console.

Scénario 2 : Créer un flux Lookup pour effectuer une jointure sur des données complémentaires

Basé sur le scénario précédent, ce scénario explique comment utiliser un flux Lookup (de référence) afin d'effectuer une jointure sur des données souhaitées dans le fichier XML USState.xml du flux principal. Un autre tFileInputXML est ajouté au Job pour charger des données à partir du fichier lookup USState.xml vers le composant tXMLMap de la famille Processing.

Le contenu du fichier XML USState.xml se présentent comme suit :

<?xml version="1.0" encoding="ISO-8859-15"?>
<USStates>
  <States>
    <idState>1</idState>
    <LabelState>Alabama</LabelState>
  </States> 
  <States>
    <idState>2</idState>
    <LabelState>Connecticut</LabelState>
  </States>
  <States>
    <idState>3</idState>
    <LabelState>Ohio</LabelState>
  </States>  
  <States>
    <idState>4</idState>
    <LabelState>Wyoming</LabelState>
  </States>
    <States>
    <idState>5</idState>
    <LabelState>Hawaii</LabelState>
  </States>
</USStates>

Ajouter et relier un autre composant d'entrée

  1. Dans votre Studio, ouvrez le Job utilisé dans le scénario précédent pour l'afficher dans l'espace de modélisation graphique. Nommez ce composant USStates pour mieux identifier sa fonction.

  2. Ajoutez un autre tFileInputXML au Job en saisissant son nom dans l'espace de modélisation graphique ou en le déposant depuis la Palette.

  3. Reliez le tFileInputXML nommé USStates au tXMLMap à l'aide d'un lien Row > Main. La connexion est automatiquement modifiée en connexion Lookup.

Configurer le flux de référence

  1. Double-cliquez sur le composant tFileInputXML nommé USStates pour ouvrir sa vue Basic settings.

  2. Cliquez sur le bouton [...] à côté du champ Edit schema et dans la boîte de dialogue [Schema], définissez le schéma en ajoutant une colonne USState de type Document.

  3. Cliquez sur OK pour valider les modifications et fermer la boîte de dialogue. Une ligne est automatiquement ajoutée à la table Mapping.

  4. Dans le champ File name/Stream, parcourez votre système ou saisissez entre guillemets doubles le chemin d'accès au fichier XML source contenant les données complémentaires. Dans ce scénario, le fichier est E:/USStates.xml.

  5. Dans le champ Loop XPath query, saisissez une expression XPath entre guillemets doubles pour spécifier le nœud sur lequel se base la boucle. Dans ce scénario, saisissez /, ce qui signifie effectuer une requête de recherche depuis la racine.

  6. Dans la colonne XPath query de la table Mapping, saisissez entre guillemets doubles les champs à interroger. Dans ce scénario, saisissez ., ce qui signifie que tous les champs du nœud (racine) sont extraits.

  7. Dans la colonne Get Nodes de la table Mapping, cochez la case. Cela va récupérer la structure XML des données de type Document.

Configurer le tXMLMap pour la transformation

  1. Double-cliquez sur le composant tXMLMap pour ouvrir le Map Editor.

    Notez que la zone d'entrée est déjà remplie par les tables d'entrée définies et que la table supérieure est la table principale d'entrée (flux Main).

  2. Dans la table d'entrée row2, cliquez-droit sur le nœud USState et, dans le menu contextuel, sélectionnez Import From File. Dans la boîte de dialogue qui s'ouvre, parcourez votre système jusqu'au fichier XML source duquel importer la structure XML utilisée par les donnée reçues par le tXMLMap. Dans ce scénario, le fichier XML source est USState.xml, le fichier des données d'entrée du tFileInputXML nommé USStates.

  3. Dans l'arborescence XML importée, cliquez-droit sur le nœud States et, dans le menu contextuel, sélectionnez As loop element afin de le définir comme élément de boucle.

  4. Dans la table principale d'entrée row1, cliquez sur le nœud idState et déposez-le, dans la colonne Exp.key de la ligne du nœud idState, dans la table lookup row2. Cela crée une jointure entre les deux tables d'entrée sur les données idState, parmi lesquelles le nœud idState du flux principal fournit la clé de référence (lookup key).

  5. Dans la table lookup d'entrée row2, cliquez sur le nœud LabelState et déposez-le sur la table de sortie Customer. Une boîte de dialogue s'ouvre.

  6. Dans cette boîte de dialogue, sélectionnez Create as sub-element of target node puis cliquez sur OK. Un sous-élément LabelState est ajouté dans l'arborescence XML de sortie et mappé avec le nœud LabelState de la table lookup.

  7. Cliquez sur OK pour valider le mapping et fermer le Map Editor.

Sauvegarder et exécuter le Job

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

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

    Comme affiché ci-dessus, les noms des États des États-Unis du fichier lookup dont les ID correspondent à ceux du fichier d'entrée principal sont ajoutés au flux de données et les informations combinées sont affichées dans la console.

Un tutoriel étape par étape relatif aux jointures est disponible sur le site de la communauté technique Talend. Pour plus d'informations, consultez http://www.talendforge.org/tutorials/tutorial.php?language=french&idTuto=101.

Scénario 3 : Mapper des données à l'aide d'un filtre

Ce scénario se base sur Scénario 2 : Créer un flux Lookup pour effectuer une jointure sur des données complémentaires et explique comment appliquer une (des) condition(s) de filtre pour sélectionner les données qui vous intéressent, à l'aide du tXMLMap.

  1. Dans votre Studio, ouvrez le Job utilisé dans le scénario précédent afin de l'afficher dans l'espace de modélisation graphique.

  2. Double-cliquez sur le tXMLMap pour ouvrir son éditeur Map Editor.

  3. En haut de la table de sortie Customer, cliquez sur le bouton pour ouvrir la zone de filtre.

  4. Glissez le nœud idState de la table principale d'entrée dans la zone de filtre. Le chemin XPath [row1.Customer:/Customers/Customer/Address/idState] du nœud idState est ajouté automatiquement dans cette zone de filtre.

    Saisissez == 2 après le XPath du nœud idState. La condition complète du filtre devient [row1.Customer:/Customers/Customer/Address/idState] == 2. Cela signifie que seules les données clients dont l'ID de l'État est 2 seront transmises au flux de sortie.

  5. Cliquez sur OK pour valider les modifications et fermer l'éditeur.

  6. Appuyez sur les touches Ctrl+S pour enregistrer votre Job, puis sur F6 pour l'exécuter.

    Comme affiché ci-dessus, les résultats montrent que les clients Griffith Paving and Sealcoatin et Glenn Oaks Office Supplies dont l'ID de l'État est 2 sont affichés dans la console.

Scénario 4 : Capturer les données rejetées par le flux Lookup et le filtre

Les données rejetées par le flux Lookup et les conditions de filtre définies dans le tXMLMap peuvent être capturées et écrites en sortie par le composant lui-même.

Ce scénario se base sur Scénario 3 : Mapper des données à l'aide d'un filtre, et explique comment capturer les données rejetées par le flux Lookup et les filtrer défini dans les sections précédentes.

Dans ce scénario, un autre composant tLogRow est ajouté au Job du scénario précédent pour afficher les données rejetées.

Ajouter et relier un composant de sortie supplémentaire

  1. Dans le Studio, ouvrez le Job utilisé dans le scénario précédent dans l'espace de modélisation graphique.

  2. Ajoutez un autre composant tLogRow au Job en saisissant son nom dans l'espace de modélisation graphique ou en le déposant depuis la Palette.

  3. Reliez le tXMLMap au second tLogRow, à l'aide d'un lien Row > *New Output* (Main). Une boîte de dialogue s'ouvre et vous demande de nommer ce lien de sortie. Dans ce scénario, nommez le lien Reject.

Configurer le tXMLMap pour la transformation

  1. Double-cliquez sur le composant tXMLMap pour ouvrir son éditeur. Une table Reject vide a été ajoutée à la sortie pour représenter le flux de sortie contenant les données rejetées.

  2. Dans la table principale d'entrée row1, cliquez sur le nœud id et déposez-le dans la table Reject. Une colonne id est ajoutée au schéma Reject dans la zone Schema editor en bas de l'éditeur.

  3. Déposez également CustomerName, CustomerAddress et idState de la table row1 et LabelState de la table row2 dans la table de sortie Reject. Quatre colonnes, CustomerName, CustomerAddress, idState et LabelState sont ajoutées au schéma Reject dans la zone Schema editor.

    Note

    Dans ce scénario, le flux de sortie Reject utilise des données de type plat. Cependant, vous pouvez créer une arborescence XML pour ce flux, similaire à celle du flux de sortie Customer, à l'aide du type de données Document. Pour plus d'informations concernant le type Document, consultez Scénario 1 : Mapper et transformer des données de source XML.

  4. En haut de la table Reject de sortie, cliquez sur le bouton pour ouvrir la zone de configuration.

  5. Configurez la valeur de la propriété Catch Output Reject à true afin de récupérer les données rejetées par le filtre du scénario précédent, pour le flux de sortie Customer.

  6. Configurez la valeur de la propriété Catch Lookup Inner Join Reject à true pour récupérer les données rejetées par l'opération de jointure Inner Join.

  7. Cliquez sur OK pour valider les modifications et fermer l'éditeur de mapping.

Configurer le mapping et exécuter le Job

  1. Dans la table d'entrée principale, à gauche de l'éditeur, glissez-déposez le nœud id dans la colonne Expression de la ligne correspondante de la table de sortie Reject.

  2. Glissez-déposez CustomerName, CustomerAddress et idState de la table d'entrée principale et LabelState de la table lookup dans les lignes correspondantes de la table de sortie Reject.

  3. Dans la partie supérieure de la sortie dans le Map editor, sélectionnez la table Reject.

  4. En haut de cette table, cliquez sur le bouton pour ouvrir la zone de configuration.

  5. Configurez la propriété Catch Output Reject à true pour récupérer les données rejetées par le filtre défini dans le scénario précédent pour le flux de sortie Customer.

  6. Répétez l'opération pour sélectionner true pour la propriété Catch Lookup Inner Join Reject.

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

Configurer le flux de sortie

  1. Double-cliquez sur le second composant tLogRow pour ouvrir sa vue Basic settings.

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

  3. Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour un affichage optimal des résultats.

Sauvegarder et exécuter le Job

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

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

Les données capturées rejetées par le flux Lookup et le filtre s'affichent comme suit dans la vue Run :

Comme affiché ci-dessus, les données dont la valeur de idState est 2 sont sélectionnées par le filtre configuré dans le scénario précédent et affichées dans la partie supérieure. Les données dont la valeur de idState n'est pas 2 sont rejetées et affichées dans la partie inférieure.

Scénario 5 : Mapper des données à l'aide d'un élément "group"

Ce scénario se base sur le Job utilisé dans Scénario 2 : Créer un flux Lookup pour effectuer une jointure sur des données complémentaires et explique comment définir un élément en tant que group element dans le Map Editor du tXMLMap afin de regrouper les données de sortie. Pour plus d'informations concernant le regroupement de données de sortie à l'aide du composant tXMLMap, consultez le Guide utilisateur du Studio Talend.

L'objectif de ce scénario est de regrouper les IDs des clients et les informations relatives aux clients, selon l'Etat dans lequel ils résident. Vous devez reconstruire l'arborescence XML de la table de sortie Customer, en prenant en compte les facteurs suivants :

  • Les éléments relatifs à l'ID et au nom des clients doivent être situés sous l'élément de boucle. Ils sont donc des sous-éléments de la boucle.

  • L'élément de boucle et ses sous-éléments doivent dépendre directement de l'élément de groupe.

  • L'élément relatif aux informations d'Etat utilisé comme condition de groupe doit dépendre directement de l'élément de groupe.

  • L'élément de groupe ne peut pas être l'élément racine.

A partir de cette analyse, la structure XML des données de sortie doit se présenter comme suit. Le nœud customers est le nœud racine, le nœud customer est configuré comme l'élément de groupe et les données de sortie dont groupées selon l'élément LabelState

Pour qu'un élément de groupe agisse, les données XML à traiter doivent avoir été triées, par exemple via vos outils XML, autour de l'élément qui sera utilisé comme condition de regroupement. Dans cet exemple, les clients ayant un même ID d'État doivent être regroupés. Les données d'entrée du fichier XML Customer.xml doivent se présenter comme suit :

<?xml version="1.0" encoding="ISO-8859-15"?>
<Customers>
	<Customer RegisterTime="2001-01-17 06:26:40.000">
		<Name>
			<id>1</id>
			<CustomerName>Griffith Paving and Sealcoatin</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>talend@apres91</CustomerAddress>
			<idState>2</idState>
		</Address>
		<Revenue>
			<Sum1>67852</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="1987-02-23 17:33:20.000">
		<Name>
			<id>3</id>
			<CustomerName>Glenn Oaks Office Supplies</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>1859 Green Bay Rd.</CustomerAddress>
			<idState>2</idState>
		</Address>
		<Revenue>
			<Sum1>1225.</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="2002-06-07 09:40:00.000">
		<Name>
			<id>2</id>
			<CustomerName>Bill's Dive Shop</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>511 Maple Ave. Apt. 1B</CustomerAddress>
			<idState>3</idState>
		</Address>
		<Revenue>
			<Sum1>88792</Sum1>
		</Revenue>
	</Customer>
	<Customer RegisterTime="1992-04-28 23:26:40.000">
		<Name>
			<id>4</id>
			<CustomerName>DBN Bank</CustomerName>
		</Name>
		<Address>
			<CustomerAddress>456 Grossman Ln.</CustomerAddress>
			<idState>3</idState>
		</Address>
		<Revenue>
			<Sum1>64493</Sum1>
		</Revenue>
	</Customer>
</Customers>
  1. Dans votre Studio, ouvrez le Job utilisé dans Scénario 2 : Créer un flux Lookup pour effectuer une jointure sur des données complémentaires afin de l'afficher dans l'espace de modélisation graphique et double-cliquez sur le tXMLMap pour ouvrir le Map Editor.

  2. Dans l'arborescence XML de la table de sortie Customer, cliquez-droit sur le nœud customer (loop) et sélectionnez Delete dans le menu contextuel. Tous les éléments sous le nœud racine customers sont supprimés. Vous pouvez reconstruire l'arborescence XML à utiliser pour grouper vos données.

  3. Cliquez-droit sur le nœud racine customers et sélectionnez Create Sub-Element dans le menu contextuel. Dans la boîte de dialogue qui s'ouvre, saisissez le nom du sous-élément, customer, par exemple.

    Cliquez sur OK pour valider les modifications et fermer la boîte de dialogue. Un nœud racine customer est ajouté à la table de sortie.

  4. Dans la table d'entrée row2, sélectionnez le nœud LabelState et déposez-le sur le nœud customer de la table de sortie. Dans la boîte de dialogue qui s'ouvre, sélectionnez Create as sub-element of target node puis cliquez sur OK pour fermer la boîte de dialogue. Un nœud LabelState est ajouté sous le nœud customer dans la table de sortie.

  5. Cliquez-droit sur le nœud customer de la table de sortie et sélectionnez Create Sub-Element dans le menu contextuel. Dans la boîte de dialogue qui s'ouvre, saisissez le nom du nouveau sous-élément. Dans cet exemple, saisissez Name.

    Cliquez sur OK pour valider les modifications et fermer la boîte de dialogue. Un nœud Name est ajouté sous le nœud customer dans la table de sortie.

  6. Dans la table d'entrée row1, sélectionnez les nœuds id et CustomerName et déposez-les sur le nœud Name de la table de sortie. Dans la boîte de dialogue qui s'ouvre, sélectionnez Create as sub-element of target node et cliquez sur OK pour fermer la boîte de dialogue. Un nœud id et un nœud CustomerName sont ajoutés sous le nœud Name de la table de sortie.

  7. Dans la table de sortie, cliquez-droit sur le nœud Name et sélectionnez As loop element dans le menu contextuel pour définir cet élément comme élément de boucle. Cliquez-droit sur le nœud customer et, dans le menu contextuel, sélectionnez As group element afin de regrouper les données de sortie selon l'élément LabelState.