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

    Exemple d'une structure d'entrée et de sortie.
  2. Placez 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.
    Création d'une expression de boucle.
  3. Placez 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.
    Boîte de dialogue Change Loop Specification or Generate AgConcat (Modifier les spécifications de la boucle ou générer AgConcat).
    Une fonction AgConcat est automatiquement ajoutée à l'élément de sortie B.
  5. Placez 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. Placez 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. Placez 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/C1 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.
    Création d'un filtre correspondant.

Résultats

La map est configurée, vous pouvez utiliser l'option Test Run pour voir le résultat. Dans cet exemple, elle a l'aspect suivant :
<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 – faites-le-nous savoir.