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 :

Parcourir plusieurs fois un contextFile


Sujet :

Talend

  1. #1
    Membre régulier
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 85
    Points : 72
    Points
    72
    Par défaut Parcourir plusieurs fois un contextFile
    ]Bonjour,

    J'ai réalisé un Job (TOS for ESB) qui peut s'appliquer sur différentes View et Table qui se correspondent.
    J'aimerai parcourir un fichier de context qui contient mes différentes variables pour que mon job s'exécute sur chacune des tables et vues renseignées.
    Pour l'exemple mon Job peut s'appliquer sur 3 tables et vues, j'aimerai donc qu'il s'exécute 3 fois : la 1ère sur la colonne B, la deuxième sur la colonne C et la troisième sur la colonne D de mon fichier CSV de context. Je lis donc en premier lieu mon fichier de context vie un tFileInputDelimited et un tContextLoad

    Mon fichier :

    Nom : Capture.PNG
Affichages : 30
Taille : 28,4 Ko

    Je ne sais pas trop comment m'y prendre, je peux utiliser un composant spécifique (tLoop) ? Un autre moyen ?
    Actuellement je possède un Job pour chaque Table et Vue correspondante (environ une dizaine, ce qui implique 10 Jobs et 10 fichiers de contexts).

    Merci d'avance.

    Ps : j'aimerai que le Job se poursuive même si il rencontre une erreur durant son exécution, c'est à dire que si il y a une erreur sur la colonne B, il passe à la colonne C.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    février 2008
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : février 2008
    Messages : 822
    Points : 1 202
    Points
    1 202
    Par défaut
    Salut,

    Pour itérer une action sur chaque ligne d'une source de données, il faut utiliser le composant tFlowToIterate.

    Nicolas

  3. #3
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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 : 666
    Points : 1 416
    Points
    1 416
    Par défaut
    Nico à raison mais le plus dur pour toi va être de renverser le CSV.
    Tu n'es pas dans une logique schema = column mais schema = ligne.
    Le plus simple est de le faire à la main mais c'est chiant
    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

  4. #4
    Membre régulier
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 85
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Nico à raison mais le plus dur pour toi va être de renverser le CSV.
    Tu n'es pas dans une logique schema = column mais schema = ligne.
    Le plus simple est de le faire à la main mais c'est chiant
    Oui c'est sur mais le service veut tout automatiser et limiter les fichiers, les Jobs. Actuellement je transfère les fluxs atuels qui sont sous Genio vers Talend et j'ai comme consigne de faire ça ...

    En tout cas je prends note de vos conseils, merci !

  5. #5
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    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 : 666
    Points : 1 416
    Points
    1 416
    Par défaut
    Renverser le CSV en java tu peux t'en sortir avec une routine et un tJavaFlex

    L'objectif est de transformer ton fichier en tableau à 2 dimensions puis de la parcourir en colonne.

    Cette stratégie fonctionne car ton fichier est assez petit ça ne fonctionnera pas avec un fichier de 10Go.

    Essaye de faire un job du genre

    tFileOutputDelimeted_1 -row1-> tJavaFlex_1 -onComponentOk-> tJavaFlex_2 -row2-> tFlowToIterate -iterate-> le reste de ton job


    tFileOutputDelimeted_1 :
    Parse ton fichier tu lui mets qu'une seule ligne dans ton schéma
    Il est juste la pour te mâcher le travail, ce qu'il t’intéresse vraiment dedans c'est le tableau qui représente ta ligne spliter.
    Ce tableau tu le réutiliseras dans le main du tJavaFlex1.
    Le nom de la variable du tableau tu pourras le trouver en cherchant Oui c'est bisard. Mais ça marche !

    tJavaFlex_1 :
    Construit ton tableau
    A la fin du traitement tu le partage dans globalMap

    tJaveFlex_2 :
    lit ton tableau
    Dans le main tu dois commencer ton itération et alimenter en fonction row2 sans fermer les boucles
    Dans le code de fin fermer tes boucles
    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

  6. #6
    Membre régulier
    Homme Profil pro
    Stagiaire Décisionnelle
    Inscrit en
    juillet 2019
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire Décisionnelle
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : juillet 2019
    Messages : 85
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Renverser le CSV en java tu peux t'en sortir avec une routine et un tJavaFlex
    Mon Job agit sur une vue et une table lui correspondant, je dois avoir une dizaine de fois à exécuter le job. Après c'est un fichier CSV contenant le nom tables/vues et les infos de connexion au server de bdd, donc c'est une fichier léger.
    A la limite je peux renverser le CSV à la main ça ne me prendra pas beaucoup de temps puisque j'ai assez peu de colonne (13 dont 12 contenant les valeurs et la première les nom des variables) sur 27 lignes.

    Je vais essayer dans un premier temps la méthode que tu m'as indiqué, ça me fera un bon exercice et si ça me prends trop de temps je le restructurerai à la main.

    En tout cas merci !

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. Macro sur Excel/Boucle sur les lettres
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/11/2005, 11h56
  3. [JDBC]Boucle sur tous les éléments du ResultSet
    Par Terminator dans le forum JDBC
    Réponses: 1
    Dernier message: 22/09/2005, 19h30
  4. L'installation d'XP boucle sur elle-même
    Par pf106 dans le forum Windows XP
    Réponses: 13
    Dernier message: 20/08/2005, 14h55
  5. [MFC] Boucle sur un bouton
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h37

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