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

Générer et configurer une expression AgConcat

Talend Data Mapper peut générer automatiquement une expression AgConcat pour traiter les boucles incompatibles.

Pourquoi et quand exécuter cette tâche

Cet exemple utilise l'échantillon XML suivant en entrée :
<root>
	<loopA>
		<A>a1</A>
		<loopB>
			<B>b11</B>
		</loopB>
		<loopB>
			<B>b12</B>
		</loopB>
		<loopC>
			<C>c11</C>
		</loopC>
		<loopC>
			<C>c12</C>
		</loopC>
	</loopA>
	<loopA>
		<A>a2</A>
		<loopB>
			<B>b21</B>
		</loopB>
		<loopB>
			<B>b22</B>
		</loopB>
		<loopC>
			<C>c21</C>
		</loopC>
		<loopC>
			<C>c22</C>
		</loopC>
	</loopA>
</root>
La structure XML de sortie est définie comme suit :
root
	row (0:*)
		A
		B
		C1
		C2

Procédure

  1. Créez une map et ajoutez les structures d'entrée et de sortie.

    Exemple

  2. Glissez l'élément d'entrée A sur l'élément de sortie A.
    Une expression de boucle est automatiquement créée sur l'élement de sortie row.
  3. Glissez l'élément d'entrée B sur l'élément de sortie B.
    Cette action crée un conflit, le contexte de boucle de l'élément d'entrée B n'est pas compatible avec le contexte de boucle de sortie courant.
  4. Sélectionnez Generate AgConcat value expression on out$/root/row/B et cliquez sur OK.
    Une fonction AgConcat est automatiquement ajoutée à l'élément de sortie B.
  5. Glissez l'élément d'entrée C sur l'élément de sortie C1, puis sélectionnez Generate AgConcat value expression on out$/root/row/C1 et cliquez sur OK.
  6. Déposez une fonction SingleIndex sur l'argument Filter de la fonction AgConcat.
    Cela vous permet de spécifier que l'élément de sortie C1 doit retourner uniquement la première valeur de l'élément d'entrée C.
  7. Glissez l'élément d'entrée C sur l'élément de sortie C2, puis sélectionnez Generate AgConcat value expression on out$/root/row/C2 et cliquez sur OK.
    Comme l'élément frère C1 contient un filtre, un filtre correspondant est automatiquement ajouté à C2 afin qu'il retourne uniquement la deuxième valeur de l'élément d'entrée C.

Résultats

La map est configurée, vous pouvez utiliser l'option Test Run pour voir le résultat. Dans cet exemple, il ressemble à ceci :
<root>
  <row>
    <A>a1</A>
    <B>b11b12</B>
    <C1>c11</C1>
    <C2>c12</C2>
  </row>
  <row>
    <A>a2</A>
    <B>b21b22</B>
    <C1>c21</C1>
    <C2>c22</C2>
  </row>
</root>

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 – dites-nous comment nous améliorer !