Retourner un index de boucle - 7.3

Guide de référence des fonctions de Talend Data Mapper

Version
7.3
Language
Français
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
Last publication date
2023-01-09

Utilisez une fonction LoopIndex pour retourner l'index d'une boucle et de son parent.

Avant de commencer

Vous avez créé une map avec une structure d'entrée et de sortie. Vous pouvez utiliser les échantillons fournis ci-dessous.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, vous avez un fichier JSON contenant des informations relatives aux employé·es et chef·fes d'équipes. Vous souhaitez créer un fichier XML avec des informations relatives aux employé·es, y compris un index unique des employé·es et un index d'équipes. Vous pouvez utiliser l'échantillon JSON suivant en entrée :
{
   "team":[
      {
         "manager":"Steve Rogers",
         "employees":[
            "Tony Stark",
            "Natasha Romanoff",
            "Bruce Banner",
            "Clint Barton"
         ]
      },
      {
         "manager":"Reed Richards",
         "employees":[
            "Susan Storm",
            "Johnny Storm",
            "Ben Grimm"
         ]
      }
   ]
}
Vous pouvez utiliser l'échantillon XML suivant pour créer votre structure de sortie :
<root>
	<employee>
		<employeeName/>
		<employeeIndex/>
		<teamIndex/>
	</employee>
	<employee>
		<employeeName/>
		<employeeIndex/>
		<teamIndex/>
	</employee>
</root>

Procédure

  1. Cliquez sur l'élément de sortie employee pour configurer son expression de boucle :
    1. Glissez-déposez une fonction SimpleLoop dans l'onglet Loop.
    2. Glissez-déposez l'élément d'entrée team sur l'argument Input Map Element.
    3. Glissez-déposez une fonction NestedLoop sur l'argument Contexts et déposez une autre fonction SimpleLoop dessus.
    4. Glissez-déposez l'élément d'entrée employees sur l'argument Input Map Element.
  2. Glissez-déposez l'élément d'entrée employees sur la sortie employeeName.
  3. Glissez-déposez une fonction LoopIndex sur l'élément employeeIndex.
  4. Glissez-déposez l'élément de sortie employee sur l'argument Looping Output Element.
  5. Double-cliquez sur LoopIndex, sélectionnez Output Loop dans la liste déroulante Use Index Of et cliquez sur OK.
    Cela indique que l'élément doit retourner l'index corespondant à l'itération de l'élément employee dans la structure de sortie. Si vous sélectionnez Input Loop, l'index correspond à l'itération de l'élément d'entrée employees au sein d'un élément team.
  6. Glissez-déposez une fonction LoopIndex sur l'élément employeeIndex.
  7. Glissez-déposez l'élément de sortie employee sur l'argument Looping Output Element.
  8. Double-cliquez sur LoopIndex et sélectionnez in$/employees_input/team dans Looping Index of Element, puis cliquez sur OK.
    Puisque l'élément employee comprend une expression de boucle qui contient une boucle imbriquée. vous pouvez choisir de retourner l'index pour toute boucle d'entrée correspondante. Dans ce cas, vous souhaitez retourner l'index correspondant à l'itération de l'élément d'entrée team.
    Remarque : Cette fonctionnalité est disponible uniquement si vous avez installé la mise à jour mensuelle R2020-04 du Studio ou une mise à jour plus récente fournie par Talend. Pour plus d'informations, contactez votre administrateur ou administratrice.

Résultats

Votre map est à présent configurée. Vous pouvez utiliser la fonctionnalité Test Run pour voir le résultat. Dans cet exemple, la sortie suivante est retournée :
<root>
  <employee>
    <employeeName>Tony Stark</employeeName>
    <employeeIndex>1</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Natasha Romanoff</employeeName>
    <employeeIndex>2</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Bruce Banner</employeeName>
    <employeeIndex>3</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Clint Barton</employeeName>
    <employeeIndex>4</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Susan Storm</employeeName>
    <employeeIndex>5</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
  <employee>
    <employeeName>Johnny Storm</employeeName>
    <employeeIndex>6</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
  <employee>
    <employeeName>Ben Grimm</employeeName>
    <employeeIndex>7</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
</root>