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 :

Utilisation Routine Talend


Sujet :

Talend

  1. #1
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut Utilisation Routine Talend
    Bonjour,

    j'aimerai utiliser des routines pour réduire le code présent dans mes tJava, cependant je ne sais pas si certaines choses sont possibles.
    Par exemple je fais dans un tDBInput :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT(*)
    FROM maTable
    Puis dans un tJavaRow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NB_LINES = row9.IdTable;
    System.out.println("COUNT : " + NB_LINES);
    Le schéma est tout simple : Nom : Capture.PNG
Affichages : 711
Taille : 8,1 Ko

    Ce que je voudrais c'est mettre le code dans ma routine puis appeler cette fonction dans mon tJavaRow. Mais je ne sais absolument pas comment faire.

    Est-ce que je peux utiliser les systèmes de row9 comme dans le tJava? Sinon il faut faire une certaine manipulation ? Ou alors ce n'est pas possible?

    Merci pour votre aide !

  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
    Tu ne pourras pas écrire

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    TaRounite.tafunction(row9);

    car row9 est de type row9Struct défini dans la classe privée dans ton job, du coup tu n'auras jamais la visibilité dessus.

    _____

    Par contre tu peux écrire

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    TaRounite.tafunction(row9.column1,row9.column2,row9.column3);

    car chaque type de chacune des colonnes de ton schéma sont des types standards de java.

    ___________

    Après une routine est rien d'autre qu'une classe java avec des méthodes statiques.

    Si tu veux des exemples, regarde des routines systèmes.
    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 actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    Ok super, je pense que je pourrais m'en sortir avec tes infos.

    Merci beaucoup !

  4. #4
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    J'ai différents arrayList enregistrer en globalMap et pour chaque tJava je suis obligé de faire le code ci dessous pour récuperer les données.
    J'aimerai mettre ce code dans une routine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < nbElement; i++)
    	{
    		monTableau.add(((ArrayList)globalMap.get("maGlobalMap")).get(i).toString());
    	}
    pour simplement appeler la fonction dans mes tJava (j'en ai une dizaine de similaire) et récuperer l'arrayList.

    J'ai mis dans ma routine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static ArrayList<String> arrayGlobalMap(Array parameter) {
     
    		 ArrayList<String> myArray = new ArrayList<>(); 
     
    		return myArray;
    	}
    et mon code d'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      ArrayList<String> monArray = new ArrayList<>();
     
    monArray = Java_Insert_Routine.arrayGlobalMap((Array)globalMap.get("maGlobalMap"));
    Mais j'obtiens l'erreur : The method arrayGlobalMap(java.lang.reflect.Array) in the type Java_Insert_Routine is not applicable for the arguments (java.sql.Array).

    Mes import routine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    Mes import tJava :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import java.sql.*;
    import java.math.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Collections;
    Saurais-tu comment faire ?

  5. #5
    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 dois importer java.sql.Array et non l'autre .
    Ce sont 2 types différents.

    Regarde le code de ton job dans l'onglet code.

    Et l'import de Array doit être exactement le même entre ton job et ta routine
    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 actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Tu dois importer java.sql.Array et non l'autre .
    Ce sont 2 types différents.

    Regarde le code de ton job dans l'onglet code.

    Et l'import de Array doit être exactement le même entre ton job et ta routine
    Effectivement j'ai mis les mauvais paramètres vu que j'utilise de arrayList ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static ArrayList<String> arrayGlobalMap(arrayList parameter) {
     
    		 ArrayList<String> myArray = new ArrayList<>(); 
     
    		return myArray;
    	}
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray = Java_Insert_Routine.arrayGlobalMap((arrayList)globalMap.get("maGlobalMap"));
    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage des routines Talend
    Par max-mag dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 08/08/2012, 10h25
  2. Routine Talend non reconnue
    Par stef1109 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 19/10/2011, 17h58
  3. Utilisation tflowToIterate Talend
    Par Anne-Emma dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 18/01/2011, 16h54
  4. Mapping des tables utilisées par Talend
    Par Kévin013 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/04/2010, 09h46
  5. utilisation de talend
    Par abdelkefi.stat dans le forum Installation, migration et administration
    Réponses: 1
    Dernier message: 07/07/2008, 10h23

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