IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Talend Discussion :

action pour chaque valeur d'une requete.


Sujet :

Talend

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 54
    Points
    54
    Par défaut action pour chaque valeur d'une requete.
    Bonjour,

    je bloque sur quelque chose qui je pense doit être assez simple, mais je n'arrive pas à trouver le bon composant ou la bonne combinaison de composants pour cela.

    A partir d'une requete sql qui me donne une liste de Ville (donc le résultat de la requête est d'une seule colonne) je cherche à créer un fichier par Ville renvoyé.
    créer des fichiers, je sais faire,
    faire la requete sql, je sais faire (la requete est testé avec un toracleinput suivi d'un tlogrow et le résultat est bon)
    mais il me manque le lien.

    je voulais créer une variable de contexte pour mettre successivement le nom de la ville, créer le fichier, puis lire le deuxieme enregistrement, le mettre dans ma variable de contexte, générer le deuxieme fichier, etc... en boucle
    Le problème est que je n'arrive pas à récupérer les valeurs de la requete une par une.


    auriez vous une astuce ?

    Merci à vous.

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Hello,

    Pour créer plusieurs fichiers à partir qu'une seule requête, il te faudra un flux iterate.

    toracleinput --row_1--> tFlowToIterate --iterate--> tFixedFlowInput -row_2-> tFileOutput#TYPE#
    ____________________________________________


    Les contraintes sont les suivantes :
    _ Tu ne pourras utilisé dans ton nom de fichier que des variables créés avant le flux iterate, exemple "/chemin/de/destination/" + row1.city + ".extension"_ Si tu as plusieurs fois le même nom de fichier, il faut faire un ajout car ça ouvre à chaque ligne le fichier

    _ Le schema du toracleinput doivent être les mêmes en gros. Pour une valeur Y dans le flux de la requete tu remplis le tFixedFlowInput avec row1.Y
    ____________________________________________




    La raison à cela est simple :

    Un flux de type "row" ouvre le fichier une seule fois avant de lancer ta requête . Du coup comme ton fichier de destination est variable et dépend de ta donné, donc ça bloque.
    Pour reprendre mon exemple "/chemin/de/destination/" + row1.city + ".extension" va te créer un seul fichier "/chemin/de/destination/null.extension" car row1.city ne sera pas encore initialisé.

    Le flux iterate casse ce problème et fait en sorte que ta requête soit exécuté avant l'ouverture de ton fichier mais ouvre et ferme ton fichier à chaque ligne
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    je te remercie pour ton aide.

    le soucis que j'ai c'est qu'à aucun moment le nom de la ville ne m'est accessible.
    effectivement je pourrais créer les fichiers correspondants;

    Mais je me rend compte que je n'ai pas été assez loin dans mon explication

    parce qu'ensuite, je dois remplir chaque fichier excel. Je voudrais les remplir avec une requete sql, qui prendrait en paramètre le nom de la ville. J'ai donc besoin d’accéder au nom de la ville, de le stocker dans une variable, de lancer un job, puis de passer à la ville suivante, etc.

    imagine que tu ais une table avec deux colonne : nom / ville
    le résultat que je recherche est d'avoir un fichier excel par ville, chaque fichier excel contenant une case remplie avec le nombre d'habitant de cette ville. (calculé par une requete sql dont un paramètre serait le nom de la ville)

  4. #4
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Tu peux faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tOracleInput_1 -row1-> tFlowToIterate -iterate-> tOracleInput_2 -> tFileOutputExcell
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT DISTINCT ville from NomTable  "
    et
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT nom from NomTable WHERE ville '" +  row1.ville + "'"
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2020, 16h52
  2. Réponses: 2
    Dernier message: 27/05/2018, 20h35
  3. [MySQL] Créer une section pour chaque valeur d'une colonne
    Par helrick dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/08/2013, 01h23
  4. Réponses: 4
    Dernier message: 14/10/2011, 17h18
  5. Réponses: 2
    Dernier message: 20/04/2006, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo