tExtractJSONFields - 6.1

Composants Talend Open Studio Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le composant tExtractJSONFields extrait les données souhaitées provenant des champs JSON d'entrée, selon la requête XPath ou JSONPath.

Objectif

Le tExtractJSONFields extrait les données des champs JSON stockés dans un fichier, une table de base de données, etc., selon la requête XPath ou JSONPath.

Propriétés du tExtractJSONFields

Famille du composant

JSON/Processing

 

Basic settings

Property type

Peut être Built-in ou Repository.

 

 

- Built-in : Propriétés utilisées ponctuellement.

 

 

- Repository : Sélectionnez le fichier dans lequel sont stockées les propriétés du composant.

 

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, sélectionnez No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

 

 

Built-In : Le schéma est créé et conservé ponctuellement pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

 

 

Repository : Le schéma existe déjà et il est stocké dans le Repository. Ainsi, il peut être réutilisé. Voir également le Guide utilisateur du Studio Talend.

 

Read by

Sélectionnez un moyen d'extraire les données JSON du fichier.

  • Xpath : extrait les données JSON à partir de la requête XPath.

  • JsonPath : extrait les données JSON à partir de la requête JSONPath. Il est recommandé de lire les données via JSONPath afin d'obtenir de meilleures performances.

 

JSON field

Liste des champs JSON à extraire.

 

Loop Jsonpath query

Spécifiez le nœud JSONPath sur lequel se base la boucle.

Si vous avez sélectionné Xpath dans la liste déroulante Read by, le champ Loop Xpath query s'affiche.

 

Mapping

Renseignez cette table pour mapper les colonnes définies dans le schéma aux nœuds JSON correspondants.

  • Column : les cellules Column sont automatiquement renseignées avec le nom des colonnes définies dans le schéma.

  • Json query/JSONPath query : spécifie le nœud JSONPath contenant les données souhaitées. Pour plus d'informations concernant les expressions JSONPath, consultez http://goessner.net/articles/JsonPath/ (en anglais).

    Cette colonne est disponible uniquement lorsque l'option JsonPath est sélectionnée dans la liste Read By.

  • XPath query : spécifie le nœud XPath contenant les données souhaitées.

    Cette colonne est disponible uniquement lorsque l'option Xpath est sélectionnée dans la liste Read By.

  • Get Nodes : cochez cette case pour extraire les données JSON de tous les nœuds ou cochez la case à côté d'un nœud spécifique pour en extraire les données.

    Cette colonne est disponible uniquement lorsque l'option Xpath est sélectionnée dans la liste Read By.

  • Is Array : cochez cette case lorsque le champ JSON à extraire est un tableau et non un objet.

    Cette colonne est disponible uniquement lorsque l'option Xpath est sélectionnée dans la liste Read By.

 

Die on error

Cochez cette case pour arrêter l'exécution du Job lorsqu'une erreur survient.

Décochez la case pour ignorer les lignes en erreur et terminer le processus avec les lignes sans erreur. Lorsque les erreurs sont ignorées,vous pouvez récupérer les lignes en erreur, si vous le souhaitez. Pour cela, utilisez un lien Row > Reject.

Advanced settings

Encoding

Sélectionnez l'encodage à partir de la liste ou sélectionnez Custom et définissez-le manuellement. Ce champ est obligatoire pour la gestion de données de bases de données.

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du Job, ainsi qu'au niveau de chaque composant.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

NB_LINE : nombre de lignes lues par un composant d'entrée ou passées à un composant de sortie. Cette variable est une variable After et retourne un entier.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant est un composant intermédiaire. Il nécessite un composant d'entrée et un composant de sortie.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Limitation

Du fait d'une incompatibilité de licence, un ou plusieurs Jar requis pour utiliser ce composant ne sont pas fournis. Vous pouvez installer les Jar manquants pour ce composant en cliquant sur le bouton Install dans l'onglet Component. Vous pouvez également trouver les Jar manquants et les ajouter dans l'onglet Modules de la perspective Integration de votre studio. Pour plus d'informations, consultez la page https://help.talend.com/display/KB/How+to+install+external+modules+in+the+Talend+products (en anglais) ou la section décrivant comment configurer le studio, dans le Guide d'installation et de migration Talend.

Scénario : Récupérer les messages d'erreur lors de l'extraction de données de champs JSON

Dans ce scénario, le tWriteJSONField transforme les données d'entrée en des champs JSON, données ensuite extraites par le tExtractJSONFields. Les messages d'erreur générés par les échecs de l'extraction, notamment les champs et erreurs JSON concernés, sont récupérés via un lien Row > Reject.

Construire le Job

  1. Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tFixedFlowInput, un tWriteJSONField, un tExtractJSONFields et deux tLogRow. Renommez les deux tLogRow, respectivement data_extracted et reject_info.

  2. Reliez le tFixedFlowInput au tWriteJSONField à l'aide d'un lien Row > Main.

  3. Connectez le composant tWriteJSONField au tExtractJSONFields à l'aide d'un lien Row > Main.

  4. Reliez le tExtractJSONFields au data_extracted à l'aide d'un lien Row > Main.

  5. Reliez le tExtractJSONFields au reject_info à l'aide d'un lien Row > Reject.

Configurer les composants

Configurer le tFixedFlowInput

  1. Double-cliquez sur le tFixedFlowInput pour afficher sa vue Basic settings.

  2. Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.

    Cliquez trois fois sur le bouton [+] pour ajouter trois colonnes, respectivement firstname, lastname et dept, de type string.

    Cliquez sur OK pour fermer l'éditeur.

  3. Sélectionnez Use Inline Content et saisissez les données ci-dessous dans le champ Content :

    Andrew;Wallace;Doc
    John;Smith;R&D
    Christian;Dior;Sales

Configurer le tWriteJSONField

  1. Cliquez sur le composant tWriteJSONField pour afficher sa vue Basic settings.

  2. Cliquez sur Configure JSON Tree pour ouvrir l'éditeur d'arborescence XML.

    Le schéma du tFixedFlowInput apparaît dans le panneau Linker source.

  3. Dans le panneau Linker target, cliquez sur le rootTag par défaut et saisissez staff, le nœud racine du champ JSON à générer.

  4. Cliquez-droit sur staff et sélectionnez Add Sub-element dans le menu contextuel.

  5. Dans la boîte de dialogue qui s'ouvre, saisissez le nom du sous-nœud, firstname.

    Répétez ces étapes pour ajouter deux autres sous-nœuds, respectivement lastname et dept.

  6. Cliquez-droit sur firstname et sélectionnez Set As Loop Element dans le menu contextuel.

  7. Déposez la ligne firstname du panneau Linker source dans son homonyme du panneau Linker target.

    Dans la boîte de dialogue qui s'ouvre, sélectionnez Add linker to target node.

    Cliquez sur OK pour fermer la boîte de dialogue.

  8. Répétez les étapes pour relier les deux autres éléments.

    Cliquez sur OK pour fermer l'éditeur d'arborescence XML.

  9. Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.

  10. Cliquez sur le bouton [+] dans le panneau de droite pour ajouter une colonne, nommez-la staff. La colonne contiendra les données JSON générées.

    Cliquez sur OK pour fermer l'éditeur.

Configurer le tExtractJSONFields

  1. Double-cliquez sur le tExtractJSONFields pour afficher sur la vue Basic settings.

  2. Cliquez sur Edit schema pour ouvrir l'éditeur du schéma.

  3. Cliquez trois fois sur le bouton [+] dans le panneau droit pour ajouter trois colonnes, respectivement firstname, lastname et dept, qui contiendront les données de leur nœud homonyme dans le champ JSON staff.

    Cliquez sur OK pour fermer l'éditeur.

  4. Dans la boîte de dialogue [Propagate], cliquez sur Yes pour propager le schéma aux composants suivants.

  5. Dans le champ Loop XPath query, saisissez "/staff", le nœud racine des données JSON.

  6. Dans la zone Mapping, saisissez le nom du nœud des données JSON dans la colonne XPath query. Les données de ces nœuds seront extraites et passées à leurs colonnes homonymes définies dans le schéma de sortie.

  7. Définissez la requête XPath "firstname" pour la colonne firstname, "lastname" pour la colonne lastname et "" pour la colonne dept. Notez que "" n'est pas une requête XPath valide et conduit à des erreurs d'exécution.

Configurer les composants tLogRow

  1. Double-cliquez sur le composant data_extracted pour afficher sa vue Basic settings.

  2. Sélectionnez Table (print values in cells of a table) pour un affichage optimal des résultats.

  3. Effectuez la même étape pour l'autre composant tLogRow, reject_info.

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder le Job.

  2. Cliquez sur F6 pour exécuter le Job.

    Le lien de rejet montre des détails, comme les données extraites, les champs JSON dont les données ne sont pas extraites et causent l'échec de l'extraction.

Scénario 2 : Collecter des données de votre réseau social favori

Dans ce scénario, le tFileInputJSON récupère le nœud friends d'un fichier JSON contenant les données d'un utilisateur Facebook et le tExtractJSONFields extrait les données du nœud friends afin d'obtenir des données plates en sortie.

Relier les composants

  1. Déposez les composants suivantes de la Palette dans l'espace de modélisation graphique : un tFileInputJSON, un tExtractJSONFields et un tLogRow.

  2. Reliez le tFileInputJSON au tExtractJSONFields à l'aide d'un lien Row > Main.

  3. Reliez le tExtractJSONFields au tLogRow à l'aide d'un lien Row > Main.

Configurer les composants

  1. Double-cliquez sur le tFileInputJSON pour afficher sa vue Basic settings.

  2. Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.

    Cliquez sur le bouton [+] pour ajouter une colonne, que vous nommez friends, de type String.

    Cliquez sur OK pour fermer l'éditeur.

  3. Cliquez sur le bouton [...] pour parcourir votre système jusqu'au fichier JSON, facebook.json dans cet exemple :

    { "user": { "id": "9999912398",
                "name": "Kelly Clarkson",
                "friends": [
                     { "name": "Tom Cruise",
                       "id": "55555555555555",
                       "likes": {
                           "data": [
                                { "category": "Movie",
                                  "name": "The Shawshank Redemption",
                                  "id": "103636093053996",
                                  "created_time": "2012-11-20T15:52:07+0000"
                                },
                                { "category": "Community",
                                  "name": "Positiveretribution",
                                  "id": "471389562899413",
                                  "created_time": "2012-12-16T21:13:26+0000"
                                }
                                    ]
                                }
                     },
                     { "name": "Tom Hanks",
                       "id": "88888888888888"
                       "likes": {
                            "data": [
                                { "category": "Journalist",
                                  "name": "Janelle Wang",
                                  "id": "136009823148851",
                                  "created_time": "2013-01-01T08:22:17+0000"
                                },
                                { "category": "Tv show",
                                  "name": "Now With Alex Wagner",
                                  "id": "305948749433410",
                                  "created_time": "2012-11-20T06:14:10+0000"
                                }
                                ]
                               }
                      }
                            ]
              }
    }
    
  4. Décochez la case Read by XPath.

    Dans la table Mapping, saisissez la requête JSONPath "$.user.friends[*]", dans la colonne JSONPath query, pour la ligne friends, permettant de récupérer le nœud friends complet du fichier source.

  5. Double-cliquez sur le tExtractJSONFields pour afficher sa vue Basic settings.

  6. Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.

  7. Cliquez cinq fois sur le bouton [+] dans le panneau de droite pour ajouter cinq colonnes. Nommez-les respectivement id, name, like_id, like_name et like_category. Chaque colonne contiendra les données des nœuds concernés dans le champ JSON friends.

    Cliquez sur OK pour fermer l'éditeur.

  8. Dans la boîte de dialogue [Propagate] qui s'ouvre, cliquez sur Yes pour propager le schéma aux composants suivants.

  9. Dans le champ Loop XPath query, saisissez "/likes/data".

  10. Dans la zone Mapping, saisissez les requêtes des nœuds JSON dans la colonne XPath query. Les données de ces nœuds seront extraites et passées aux colonnes du même nom, dans le schéma de sortie.

  11. Configurez la requête XPath "../../id" (interrogeant le nœud "/friends/id") pour la colonne id.

    Configurez également la requête "../../name" (interrogeant le nœud "/friends/name") pour la colonne name, ainsi que les requêtes "id" pour la colonne like_id, "name" pour la colonne like_name et "category" pour la colonne like_category.

  12. Double-cliquez sur le tLogRow pour afficher sa vue Basic settings.

  13. Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour un affichage optimal des résultats.

Exécuter le Job

  1. Appuyez sur les touches Ctrl + S pour sauvegarder le Job.

  2. Cliquez sur F6 pour exécuter le Job.

    Comme affiché ci-dessus, les données relatives aux amis de l'utilisateur Facebook Kelly Clarkson sont correctement extraites.