Scénario : Valider des flux de données par rapport à un fichier XSD - 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

Ce scénario décrit un Job qui valide une colonne XML dans le fichier d'entrée ShipOrder.csv par rapport au fichier XSD de référence ShipOrder.xsd, écrit les lignes valides dans le fichier délimité ShipOrder_Valid.csv et les lignes invalides ainsi que les messages d'erreur dans le fichier délimité ShipOrder_Invalid.csv.

Pour un exemple similaire d'utilisation validant un fichier XML, consultez Scénario : Valider un fichier XML.

Le contenu du fichier d'entrée ShipOrder.csv comprenant la colonne XML ShipOrder à valider se présente comme suit :

ID;ShipOrder
000001;<shiporder orderid="000001"><orderperson>George Bush</orderperson><shipto><name>John Adams</name><address>Oxford Street</address></shipto><item><title>Empire Burlesque</title><note>Special Edition</note><quantity>1</quantity><price>10.90</price></item></shiporder>
000002;<shiporder orderid="000002"><orderperson>Judy Liu</orderperson><shipto><name>Jack Liu</name><address>Wangfujing Street</address></shipto><item><title>Hide Your Heart</title><quantity>1</quantity><price>9.90</price></item></shiporder>
000003;<shiporder><orderperson>Peter Qian</orderperson><shipto><name>Thomas Wang</name><address>Wangfujing Street</address></shipto><item><title>The Power of Habit</title><quantity>1</quantity><price>8.99</price></item></shiporder>

Le contenu du fichier XSD de référence ShipOrder.xsd se présente comme suit :

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="shiporder">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="orderperson" type="xs:string"/>
    <xs:element name="shipto">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="name" type="xs:string"/>
       <xs:element name="address" type="xs:string"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
    <xs:element name="item" maxOccurs="unbounded">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="title" type="xs:string"/>
       <xs:element name="note" type="xs:string" minOccurs="0"/>
       <xs:element name="quantity" type="xs:positiveInteger"/>
       <xs:element name="price" type="xs:decimal"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
   <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
 </xs:element>
</xs:schema>

Construire le Job

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

  2. Double-cliquez sur le composant tXSDValidator pour ouvrir sa vue Basic settings et sélectionnez Flow Mode dans la liste déroulante Mode.

  3. Reliez le tFileInputDelimited au tXSDValidator à l'aide d'un lien Row > Main.

  4. Reliez le tXSDValidator au premier tFileOutputDelimited à l'aide d'un lien Row > Main pour écrire en sortie les lignes valides.

  5. Reliez le tXSDValidator au second tFileOutputDelimited à l'aide d'un lien Row > Rejects pour écrire en sortie les lignes invalides.

Configuration des composants

  1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Component.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier d'entrée. Dans cet exemple, le fichier d'entrée est E:/ShipOrder.csv.

    Dans le champ Header, saisissez 1 pour ignorer la première ligne (l'en-tête) du fichier d'entrée.

    Cliquez sur le bouton [...] à côté du champ Edit schema et définissez le schéma en ajoutant deux colonnes ID et ShipOrder de type String.

  3. Double-cliquez sur le composant tXSDValidator pour ouvrir sa vue Component.

  4. Cliquez sur le bouton Sync columns afin de récupérer le schéma du composant tFileInputDelimited précédent et, dans la boîte de dialogue qui s'ouvre, cliquez sur Yes pour propager le schéma aux deux composants tFileOutputDelimited.

    Ajoutez une ligne à la table Allocate en cliquant sur le bouton [+]. Cliquez dans la cellule de la colonne Input Column et sélectionnez la colonne XML ShipOrder à valider. Dans la colonne XSD File, saisissez le chemin d'accès au fichier XSD de référence, E:/ShipOrder.xsd dans cet exemple.

  5. Double-cliquez sur le premier tFileOutputDelimited pour ouvrir sa vue Component.

  6. Dans le champ File Name, spécifiez le chemin d'accès au fichier de sortie qui stockera les lignes valides. Dans cet exemple, le fichier est E:/ShipOrder_Valid.csv.

    Cochez la case Include Header pour inclure les en-têtes de colonnes dans le fichier de sortie.

  7. Double-cliquez sur le second tFileOutputDelimited pour ouvrir sa vue Component.

  8. Cliquez sur le bouton [...] à côté du champ Edit schema pour voir son schéma.

    Vous pouvez voir qu'une colonne supplémentaire errorMessage contenant les informations d'erreur pour les lignes invalides est ajoutée automatiquement au schéma, en plus des deux colonnes propagées.

  9. Dans le champ File Name, spécifiez le chemin d'accès au fichier de sortie qui va stocker les lignes invalides et les messages d'erreur. Dans cet exemple, le fichier est E:/ShipOrder_Invalid.csv.

    Cochez la case Include Header pour inclure les colonnes d'en-tête dans le fichier de sortie.

Sauvegarder et exécuter le Job

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

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