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 :

Extraire des données JSON et les associer au flux d'origine


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Femme Profil pro
    Data Analyst
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Extraire des données JSON et les associer au flux d'origine
    Bonjour à tous,

    Je débute avec l'utilisation du JSON.
    J'ai un fichier (.CSV) contenant 3 colonnes : id, date, detail_json. [voir la pièce-jointe : "aperçu de mon fichier .csv"]

    Mon but est de récupérer certaines données contenues dans cette chaîne JSON afin de les associer aux données du flux d'entrée.

    Je m'explique, voici mon JSON : {"gender":"MALE","firstName":"PAUL","lastName":"DUPONT"}
    J'ai besoin de récupérer la donnée "gender"

    voici le schéma de mon mécanisme TALEND (il n'est pas encore terminé):
    tFileInputDelimited (fichier .csv)=> tMap (je récupère la colonne "detail_json") => tExtractJSONFields (je récupère "gender")

    Mon problème, comment faire pour associer la donnée récupérer à mon flux principal ?
    J'ai essayé via le composant tExtractJSONFields de récupérer la donnée "gender" et l'ensemble de la chaine JSON, ce qui pourrait par la suite via un tmap servir de clé de jointure pour matcher les données du flux d'entrée.
    [voir la pièce-jointe : "mécanisme talend"]

    Sauf que via le composant tExtractJSONFields, la chaine JSON "recréé" est différente de celle du flux d'entrée.
    Flux d'entrée : {"gender":"MALE","firstName":"PAUL","lastName":"DUPONT"}
    Après tExtractJSONFields : {"firstName":"PAUL","lastName":"DUPONT","gender":"MALE"}


    Auriez-vous une idée de comment je pourrais procéder pour matcher les données JSON à mon flux principal ?
    Images attachées Images attachées   

  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
    avec un tJavaRow, ou un tMap entre le tExtractJsonField et tFileOutputDelimeted.
    Tu as encore accès aux variables de row9.

    Dans un tJavaRow par exemple :
    (Dans ce cas tu peux enlever ta sortie detail_json de ton tExtractJsonField)
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ouput_row.detail_json = row9.detail_json ;
    ouput_row.gender = input_row.gender;
    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 à l'essai
    Femme Profil pro
    Data Analyst
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Tout est ok !
    Merci Beaucoup supergeoffrey

    C'est impeccable !

    Tout simplement :
    tFileInputDelimited (fichier .csv) [flux d'entrée] => tExtractJSONFields => tFileOutputDelimited (sortie)

    Au niveau du composant tExtractJSONFields :
    - je garde le schéma d'origine
    - j'ajoute une nouvelle colonne, ("gender"), pour la donnée que je veux récupérer du JSON.
    - (paramètres simples > Mapping) je laisse vide la colonne "Json query" pour les champs qui ne changent pas, ("id", "date", "detail_json"), Je renseigne uniquement pour la colonne que je veux récupérer la donnée, ("gender").

    et c'est réglé !
    Images attachées Images attachées  

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

Discussions similaires

  1. Extraire des données JSON par les valeurs d'un noeud enfant
    Par titeuf92 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 21/11/2016, 21h21
  2. Réponses: 1
    Dernier message: 27/07/2016, 15h57
  3. Comment extraire des données de json et les mettre dans javascript ?
    Par rahma2 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/04/2016, 17h37
  4. [Toutes versions] Extraire des données word pour les insérer sous excel
    Par progfou dans le forum Word
    Réponses: 23
    Dernier message: 04/05/2009, 14h23
  5. Réponses: 2
    Dernier message: 22/06/2008, 15h41

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