Accéder au contenu principal Passer au contenu complémentaire

Mapper des données à l'aide d'un élément "group"

Ce scénario se base sur 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 des données de sortie à l'aide du composant tXMLMap, consultez Grouper les données de sortie.

L'objectif de ce scénario est de regrouper les IDs des clients et les informations relatives aux clients, selon l'État 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 répétable. Ils sont donc des sous-éléments de la boucle.

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

  • L'élément relatif aux informations d'État 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.

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

Mapper des données à l'aide d'un élément "group"

Procedure

  1. Dans votre Studio Talend, ouvrez le Job utilisé dans 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 l'éditeur 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 de sortie.
  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 nouveau sous-élément. Dans cet exemple, saisissez customer.
  4. Cliquez sur OK pour valider les modifications et fermer la boîte de dialogue.
  5. Dans la table d'entrée de référence 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 et cliquez sur OK pour fermer la boîte de dialogue.
  6. 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.
  7. Cliquez sur OK pour valider les modifications et fermer la boîte de dialogue.
  8. Dans la table d'entrée principale 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.
  9. 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 répétable. 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.
  10. Cliquez sur OK pour valider les modifications et fermer l'éditeur de mapping.
  11. Appuyez sur les touches Ctrl+S afin de sauvegarder votre Job puis sur F6 pour l'exécuter.

Results

Les éléments id et CustomerName contenus dans la boucle sont regroupés en fonction de l'élément LabelState. La balise du group element customer marque le début et la fin de chaque groupe.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.