Mapper une boucle récursive - 7.3

Guide d'utilisation de Talend Data Mapper

Version
7.3
Language
Français (France)
Product
Talend Big Data Platform
Talend Data Fabric
Talend Data Management Platform
Talend Data Services Platform
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Studio Talend
Content
Création et développement > Création de Jobs
Utilisez une fonction RecursiveLoop pour mapper une boucle d'entrée récursive vers une boucle similaire de sortie.

Avant de commencer

Vous avez créé une map avec une structure d'entrée et de sortie. Dans cet exemple, vous pouvez utiliser CustomComponent en entrée et Component en sortie. Ces structures se trouvent sous Other Projects > Examples > Structures > Recursive > Component.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, la structure d'entrée comprend un élément Component contenant une boucle SubComponents. C'est une boucle récursive utilisant les mêmes éléments que son parent.

Cette boucle récursive doit être mappée à une boucle récursive similaire dans la structure de sortie.

Cette map est disponible dans Other Projects > Examples > Maps > Looping > LoopSkipLevel.

Procédure

  1. Glissez l'élément Component sur l'élément de sortie correspondant.
  2. Dans la structure d'entrée, cliquez-droit sur la boucle SubComponents et cliquez sur Expand Recursive Elements. Cliquez-droit dessus à nouveau et cliquez sur Expand All pour afficher ses enfants.
  3. Répétez les étapes précédentes pour la boucle de sortie.
  4. Glissez-déposez une fonction RecursiveLoop sur l'onglet Loop de l'élément de sortie SubComponents.
  5. Glissez-déposez l'élément d'entrée SubComponents sur l'argument Input Map Element.
  6. Glissez l'élément d'entrée SubComponents sur l'élément de sortie correspondant afin de mapper leurs enfants.

Résultats

Avec ctte fonction RecursiveLoop, vous devez uniquement mapper le premier niveau de la boucle récursive. Le même mapping est appliqué à tous les niveaux suivants présents dans le fichier d'entrée. Vous pouvez utiliser le bouton Test Run pour voir la sortie, basée sur le fichier échantillon d'entrée. Dans cet exemple, la sortie se présente comme suit :
<Component>
  <Id>1</Id>
  <PartNumber>45I1122</PartNumber>
  <Quantity>1</Quantity>
  <Description>Main Component</Description>
  <SubComponents>
    <Id>102</Id>
    <PartNumber>12ZSSS</PartNumber>
    <Quantity>5</Quantity>
    <Description>Door Assembly</Description>
    <SubComponents>
      <Id>201</Id>
      <PartNumber>88-B</PartNumber>
      <Quantity>2</Quantity>
      <Description>Hinge</Description>
    </SubComponents>
    <SubComponents>
      <Id>202</Id>
      <PartNumber>GF4488-B</PartNumber>
      <Quantity>1</Quantity>
      <Description>Lock</Description>
    </SubComponents>
    <SubComponents>
      <Id>203</Id>
      <PartNumber>288333-I10023</PartNumber>
      <Quantity>1</Quantity>
      <Description>Sign</Description>
    </SubComponents>
  </SubComponents>
  <SubComponents>
    <Id>302</Id>
    <PartNumber>12IQWO</PartNumber>
    <Quantity>14</Quantity>
    <Description>Window Assembly</Description>
    <SubComponents>
      <Id>401</Id>
      <PartNumber>88-C</PartNumber>
      <Quantity>2</Quantity>
      <Description>Window Lock</Description>
    </SubComponents>
    <SubComponents>
      <Id>402</Id>
      <PartNumber>RT433</PartNumber>
      <Quantity>1</Quantity>
      <Description>Window Frame</Description>
    </SubComponents>
    <SubComponents>
      <Id>403</Id>
      <PartNumber>15</PartNumber>
      <Quantity>1</Quantity>
      <Description>Glass</Description>
    </SubComponents>
  </SubComponents>
</Component>