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

Développement de jobs Discussion :

Récusivité dans un fichier


Sujet :

Développement de jobs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 75
    Points : 79
    Points
    79
    Par défaut Récusivité dans un fichier
    Bonjour,

    J'ai un fichier csv en entrée de Talend qui se présente comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    col1;col2
    AA;BB
    BB;CC
    CC;DD
    EE;FF
    GG;HH
    HH;ZZ
    Je souhaite avoir en sortie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    col1;col2
    AA;DD
    EE;FF
    GG;ZZ
    Je sais qu'il est potentiellement possible de le faire avec une routine mais mes connaissances Java sont très limitées.
    Si vous avez une idée comment arriver à ce résultat, je suis preneur quelle que soit la manière d'y arriver, composants Talend ou routine Java.

    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
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    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 : 705
    Points : 1 498
    Points
    1 498
    Par défaut
    C'est faisable mais Talend n'est pas adapté à ça. Sans java tu ne peux pas le faire.
    Il faut dire que ton problème ressemble à la théorie des graphes

    Globalement j'y suis arrivé comme ça :

    tFileInputDelimeted -row1-> tJavaFlex_1 -onComponentOk-> tJavaFlex_2 -row2-> tFileOutputDelimeted

    tJavaFlex_1 :
    Début
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    java.util.Map<String,String> datas = new java.util.HashMap<>();
    Principal
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    row1Struct input = row1;
    datas.put(input.col1,input.col2);
    Fin
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    boolean modified = true;
    while(modified) {
      modified = false;
     
      for(final java.util.Map.Entry<String,String> entry : datas.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue(); 
    		String newEntryValue = datas.get(value);
    		if(newEntryValue != null && ! newEntryValue.equals(entry.getKey()) ){
    		  datas.remove(value);
    		  datas.put(key, newEntryValue);
    		  modified = true;
    		  break;
    		}
      }
     
     
    }
     
    globalMap.put("datas", datas);

    tJavaFlex_2 :
    Début
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.util.Map<String,String> datas = (java.util.Map<String,String>) globalMap.get("datas");    
     
    row2Struct output = row2;
     
    for(final java.util.Map.Entry<String,String> entry : datas.entrySet()) {  
    output.col1 = entry.getKey();
    output.col2 = entry.getValue();
    Principal
    Fin

    Je n'ai mis aucun détail mais si tu as des questions j'y répondrais
    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. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  4. séparateurs dans un fichier
    Par manuhard dans le forum Langage
    Réponses: 5
    Dernier message: 13/08/2002, 11h30
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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