Fusionnez deux boucles parallèles en une seule à l'aide d'une fonction d'agrégation.
Avant de commencer
Vous avez créé une map avec une structure d'entrée et de sortie. Dans cet exemple, vous pouvez utiliser
CustomerAddress en entrée et
CustomerCombinedAddresses en sortie. Ces structures se trouvent sous .
Pourquoi et quand exécuter cette tâche
Dans cet exemple, vous avez une entrée avec deux boucles : Address
et AddressDetail
et vous souhaitez mapper leurs éléments en une seule boucle Address
de sortie.
Cette map est disponible dans .
Procédure
-
Glissez la boucle d'entrée
Address
dans la boucle correspondante de sortie.
Les éléments sont mappés et une expression de boucle est ajoutée à la sortie Address
.
-
Glissez l'élément
Detail
dans la sortie correspondante.
-
Dans la boîte de dialogue qui s'ouvre, cliquez sur Yes.
Une fonction
AgConcat est automatiquement créée, avec une expression de boucle et un contexte. Si vous testez la map, l'élément de sortie
Detail
contient toutes les valeurs de l'élément d'entrée, pour chaque itération de l'élément
Address
. Si vous souhaitez avoir la valeur d'une seule itération de
Detail
, vous devez utiliser un filtre.
-
Glissez-déposez une fonction SingleIndex dans l'argument Filter de l'expression d'itération, sous la fonction NestedContext.
-
Glissez-déposez une fonction LoopIndex sur l'argument Index.
-
Glissez-déposez l'élément de sortie
Address
sur l'argument Looping Output Element.
Cela spécifie que l'élément
Detail
doit retourner une valeur uniquement par itération, en se basant sur l'index de la boucle
Address
. Par exemple, pour la première itération de
Address
, la sortie
Details
retourne la valeur de l'entrée
Details
pour la première itération de
AddressDetails
.
Résultats
Les éléments sont mappés. 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 :
<Customer>
<Address>
<Detail>Information about 123 Main Street</Detail>
<Street>123 Main Street</Street>
<City>Oakland</City>
<State>CA</State>
</Address>
<Address>
<Detail>Information about 456 Broadway Ave</Detail>
<Street>456 Broadway Ave</Street>
<City>Oakland</City>
<State>CA</State>
</Address>
<Address>
<Detail>Information about 67th Street</Detail>
<Street>912 67th Street</Street>
<City>Berkeley</City>
<State>CA</State>
</Address>
<Address>
<Detail>Information about 415 East Ave</Detail>
<Street>415 East Ave</Street>
<City>Oakland</City>
<State>CA</State>
</Address>
</Customer>