Accéder au contenu principal Passer au contenu complémentaire

Mapper deux boucles en une seule

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 Other Projects (Autres projets) > Examples (Exemples) > Structures > Simple > Customer.

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 Other Projects > Examples > Maps > Looping > LoopSimple.

Procédure

  1. 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.
  2. Glissez l'élément Detail dans la sortie correspondante.
  3. 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.
  4. Glissez-déposez une fonction SingleIndex dans l'argument Filter de l'expression d'itération, sous la fonction NestedContext.
  5. Glissez-déposez une fonction LoopIndex sur l'argument Index.
  6. 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>

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.