Bonjour,
Est-il possible de rediriger la sortie d'un tMap dans un espace temporaire (sans passer par un fichier) ?
Car je dois faire plusieurs liens en entrée et agréger les données en sortie, et je ne vois pas d'autres méthode.
merci.
Bonjour,
Est-il possible de rediriger la sortie d'un tMap dans un espace temporaire (sans passer par un fichier) ?
Car je dois faire plusieurs liens en entrée et agréger les données en sortie, et je ne vois pas d'autres méthode.
merci.
Bonjour, il y a des composants qui permettent de remplir et de lire un tableau en mémoire, je ne les ai jamais testés mais je pense que tu pourras faire ce que tu veux avec.
Par défaut, il sont cachés et ne sont donc pas accessibles par défaut dans la palette. Pour les afficher, il faut aller dans Window -> Preferences -> Talend -> Designer et cocher Display hidden components(need restart) et comme indiqué il faut ensuite redémarrer Talend.
Tu verras alors dans la catégorie Misc de la palette deux nouveaux composants :
- tArray : remplit un tableau
- tArrayIn : lit un tableau
Cependant, je pense qu'il faut faire attention car s'il y a énormément de données il faut beaucoup de mémoire. Enfin il y a le temps de voir venir quand même.
Je viens de tester et j'ai rencontré un problème. Les classes utilisées pour les lignes des tableaux ne sont pas les mêmes pour tArray et tArrayIn.
J'ai donc modifié rapidement le composant tArrayIn : il faut donc maintenant lui ajouter le nom de la classe. Le nom de la classe pour tArrayIn doit être le nom du lien entrant de tArray suivi de Struct.
Par exemple :
ici la propriété Class de tArrayIn doit prendre : row1Struct
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 tRowGenerator--------------->tArray | row1 | |ThenRun | v tArrayIn--------------->tLogRow row2
(Le lien pour télécharger le composant se situe un peu plus loin dans la discussion)
Merci de ta réponse et de tes modifs .
Maintenant je n'arrive aps à faire marcher le tdenormalize pour concaténer mes champs :il me dit qu'in ne peut pas convertir un entier en string et inversement.
Je ne comprends pas trop quel schéma il faut mettre en entrée et en sortie...
De rien, ce n'est pas grand chose comme modifs .Envoyé par SebastienM
Dans ce cas, il faut se débrouiller pour avoir des String en entrée du tDenormalize en passant par un tMap ou un tJavaRow par exemple où les champs de la table en sortie seraient de la forme :Envoyé par SebastienM
si input.champ1 est un objet mais n'est pas de type String.
Code : Sélectionner tout - Visualiser dans une fenêtre à part output.champ1 = input.champ1.toString();
En ce qui concerne le schéma de sortie, il s'agit du même que le schéma en entrée (donc il ne contient que des champs de type String) sauf que dans les champs agrégés (ceux qui ne sont pas utilisés dans la propriété Group By) il y a une concaténation des valeurs de tous les enregistrements.
Par exemple :
- si en entrée on a:
- en sortie on aura :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ID | CHAMP1 | CHAMP2 1 | 3 | 2 1 | 5 | 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ID | CHAMP1 | CHAMP2 1 | 3;5 | 2;2
Effectivement c'etait un problème de type.
J'obtiens le contenu suivant :
ID_NUM_NATIONAL;ID_SERVICE;ID_SERVICE_PRO;ID_SERVICE_GEST
12549;15;0;15
12548;15;0;15
12523;15;0,5;10,16
12524;15;0;15
12525;15;0;15
mais je voudrais avoir juste cela :
ID_NUM_NATIONAL;SORTIE
12549;15,0,15
12548;15,0,15
12523;15,0,5,10,16
Est-ce possible ?
Merci.
En enchaînant sur un tMap ou tJavaRow c'est possible :Envoyé par SebastienM
Par contre tu risques d'avoir des problèmes avec les nombres à virgule (enfin à mon avis tu n'as que des entiers mais on sait jamais) si tu mets des virgules comme séparateurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 output.ID_NUM_NATIONAL = input.ID_NUM_NATIONAL; output.SORTIE = input.ID_SERVICE +","+ input.ID_SERVICE_PRO +","+ input.ID_SERVICE_GEST;
c'est justement ce que j'etais en train de faire ^^ tJavRow power
Bonjour,
le composant tArrayIn par défaut de Talend est utilisé dans les tAggregateRow. Par conséquent les modifications que j'ai apportées à ce composant causent une dysfonctionnement des tAggregateRow. Pour éviter ce désagrément, j'ai renommé le composant afin qu'il puisse cohabiter avec le tArrayIn par défaut. Voici la nouvelle version :my_tArrayIn.zip
Bonjour,
Bouvda, le composant tArray modifié est un bon moyen.
Je me permet simplement de signaler qu'il existe également les composants tHashInput / tHashOutput dans les composants cachés qui peuvent certainement répondre à cette problématique.
Michaël.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager