Scénario 1 : Mapper et transformer des données de source XML - 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

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.