Scénario 4 : Extraire des données JSON d'une URL - 6.3

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
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

Dans ce scénario, le tFileInputJSON récupère des données du nœud friends du fichier JSON facebook.json sur le Web. Ce fichier contient les données d'un utilisateur de Facebook que le tExtractJSONFields extrait à partir du nœud friends pour les écrire en données plates.

Le fichier JSON facebook.json est déployé sur le serveur Tomcat, situé dans le dossier <tomcat path>/webapps/docs. Le contenu du fichier se présente comme suit :

{"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"
                }
            ]}
        }
    ]
}}

Ajouter et relier les composants

  1. Créez un nouveau Job et ajoutez un composant tFileInputJSON, un tExtractJSONFields et deux tLogRow en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette.

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

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

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

Configurer les composants

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

  2. Sélectionnez JsonPath without loop dans la liste déroulante Read By. Cochez ensuite la case Use Url et dans le champ URL qui s'affiche, saisissez l'URL du fichier facebook.json à partir duquel les données seront récupérées. Dans cet exemple, http://localhost:8080/docs/facebook.json.

  3. Cliquez sur le bouton [...] à côté de Edit schema et, dans la boîte de dialogue [Schema], définissez le schéma en ajoutant une colonne friends de type String.

    Cliquez sur OK pour fermer la boîte de dialogue et acceptez la propagation proposée par la boîte de dialogue qui s'ouvre.

  4. Dans la table Mapping, saisissez la requête JSONPath "$.user.friends[*]" à côté de la colonne friends pour récupérer le nœud friends entier à partir du fichier source.

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

  6. Sélectionnez Xpath dans la liste déroulante Read By.

  7. Dans le champ Loop XPath query, saisissez l'expression XPath entre guillemets doubles pour spécifier le nœud sur lequel la boucle doit se baser. Dans cet exemple, il s'agit de "/likes/data".

  8. Cliquez sur le bouton [...] à côté de Edit schema et, dans la boîte de dialogue [Schema], définissez le schéma en ajoutant cinq colonnes de type String, id, name, like_id, like_name et like_category, qui vont contenir les données des nœuds associés sous le champ JSON friends.

    Cliquez sur OK pour fermer la boîte de dialogue et acceptez la propagation proposée par la boîte de dialogue qui s'ouvre.

  9. Dans les champs XPath query de la table Mapping, saisissez les requêtes XPath entre guillemets doubles pour spécifier les nœuds JSON qui doivent contenir les données souhaitées. Dans cet exemple,

    • "../../id" (effectue une requête sur le nœud "/friends/id") pour la colonne id,

    • "../../name" (effectue une requête sur le nœud "/friends/name") pour la colonne name,

    • "id" pour la colonne like_id,

    • "name" pour la colonne like_name et

    • "category" pour la colonne like_category.

  10. Double-cliquez sur le second composant tLogRow pour ouvrir sa vue Basic settings.

    Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour afficher un résultat plus lisible.

Exécuter le Job

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

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