tFileInputJSON - 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 tFileInputJSON extrait des données JSON d'un fichier.

Objectif

Ce composant extrait des données JSON d'un fichier, transfère les données à un fichier, une table de base de données, etc.

Propriétés du tFileInputJSON

Famille du composant

File/Input

 

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.

  • JsonPath without loop : extrait les données JSON à partir de la requête JSONPath sans configurer de nœud de boucle.

 

Use Url

Cochez cette case pour récupérer les données directement à partir d'internet.

 

URL

Saisissez le chemin de l'URL d'où vous souhaitez récupérer les données.

Ce champ est disponible uniquement lorsque la case Use Url est cochée.

 

Filename

Spécifiez le fichier duquel récupérer les données.

Ce champ n'est pas disponible lorsque la case Use Url est cochée.

 

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.

 

Die on error

Cette case est cochée par défaut et stoppe le Job en cas d'erreur. Décochez cette case pour terminer le traitement avec les lignes sans erreurs, et ignorer les lignes en erreur. Vous pouvez récupérer les lignes en erreur, si vous le souhaitez. Pour cela, utilisez un lien Row > Reject .

Advanced settings

Advanced separator (for numbers)

Cochez cette case pour modifier le séparateur utilisé pour les nombres. Par défaut, le séparateur des milliers est une virgule (,) et le séparateur décimal est un point (.).

Thousands separator : définissez le séparateur utilisé pour les milliers.

Decimal separator : définissez le séparateur utilisé pour les décimaux.

 

Validate date

Cochez cette case pour vérifier strictement le format de date par rapport au schéma d'entrée.

Cette case n'est disponible que si la case Read By XPath est cochée.

 

Encoding

Sélectionnez l'encodage à partir de la liste ou sélectionnez Custom et définissez-le manuellement. Ce champ est obligatoire pour la manipulation des données des 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

NB_LINE : nombre de lignes traitées. Cette variable est une variable After et retourne un entier.

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.

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 de départ. Il nécessite donc un lien 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).

Scénario 1 : Extraire des données JSON d'un fichier en utilisant le JSONPath sans configurer de nœud de boucle

Ce scénario décrit un Job à deux composants qui extrait des données du fichier JSON Store.json en spécifiant le chemin JSON complet pour chaque nœud présentant un intérêt et affiche les données plates extraites dans la console.

Le fichier JSON contient des informations concernant un magasin et son contenu se présente comme suit :

{"store": {
    "name": "Sunshine Department Store",
    "address": "Wangfujing Street",
    "goods": {
        "book": [
            {
                "category": "Reference",
                "title": "Sayings of the Century",
                "author": "Nigel Rees",
                "price": 8.88
            },
            {
                "category": "Fiction",
                "title": "Sword of Honour",
                "author": "Evelyn Waugh",
                "price": 12.66
            }
        ],
        "bicycle": {
            "type": "GIANT OCR2600",
            "color": "White",
            "price": 276
        }
    }
}}

Dans l'exemple suivant, vous allez extraire de ce fichier le nom du magasin, son adresse et les informations sur les vélos.

Ajouter et relier les composants

  1. Créez un nouveau Job et ajoutez un composant tFileInputJSON et un composant 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 tLogRow à l'aide d'un lien Row > Main.

  3. Reliez les composants à 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. Pour cette option, vous devez spécifier le chemin JSON complet pour chaque nœud présentant un intérêt dans les champs JSONPath query de la table Mapping.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.

  4. Cliquez sur le bouton [+] pour ajouter cinq colonnes, store_name, store_address, bicycle_type et bicycle_color de type String et bicycle_price de type Double.

    Cliquez sur OK pour fermer l'éditeur du schéma. Dans la fenêtre qui s'affiche, cliquez sur Yes pour propager le schéma au composant suivant.

  5. Dans la boîte de dialogue [Propagate], cliquez sur Yes pour propager le schéma au composant suivant.

    Dans le champ Filename, spécifiez le chemin d'accès au fichier JSON contenant les données à extraire. Dans cet exemple, "E:/Store.json".

  6. Dans la table Mapping, les champs Column sont automatiquement renseignés par les colonnes du schéma que vous avez définies.

    Dans les champs JSONPath query, saisissez les requêtes JSONPath entre guillemets doubles pour spécifier les nœuds contenant les données souhaitées.

    • Pour les colonnes store_name et store_address, saisissez les expressions de requêtes JSONPath "$.store.name" et "$.store.address" relatives aux nœuds name et address, respectivement.

    • Pour les colonnes bicycle_type, bicycle_color et bicycle_price, saisissez les expressions de requêtes JSONPath "$.store.goods.bicycle.type", "$.store.goods.bicycle.color" et "$.store.goods.bicycle.price" relatives aux nœuds enfants, respectivement type, color et price du nœud bicycle.

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

  8. 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 sauvegarder le Job.

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

    Comme affiché ci-dessus, le nom du magasin, son adresse et les informations sur les vélos sont extraites des données source JSON et affichées sous forme de table plate dans la console.

Scénario 2 : Extraire des données JSON d'un fichier en utilisant JSONPath

Basé sur Scénario 1 : Extraire des données JSON d'un fichier en utilisant le JSONPath sans configurer de nœud de boucle, ce scénario montre comment extraire les données du tableau book du fichier JSON Store.json en spécifiant un nœud de boucle et le chemin JSON relatif pour chacun des nœuds recherchés, puis comment afficher les données extraites dans la console.

  1. Dans le Studio, ouvrez le Job utilisé dans Scénario 1 : Extraire des données JSON d'un fichier en utilisant le JSONPath sans configurer de nœud de boucle pour l'afficher dans l'espace de modélisation graphique.

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

  3. Sélectionnez JsonPath dans la liste déroulante Read By.

  4. Dans le champ Loop Json query, saisissez l'expression de requête JSONPath entre guillemets doubles pour spécifier le nœud sur lequel la boucle est basée. Dans cet exemple, "$.store.goods.book[*]".

  5. Cliquez sur le bouton [...] à côté de Edit schema pour ouvrir l'éditeur du schéma.

    Sélectionnez les cinq colonnes ajoutées précédemment et cliquez sur le bouton [x] pour les supprimer toutes.

    Cliquez sur le bouton [+] pour ajouter quatre colonnes, book_title, book_category et book_author de type String et book_price de type Double.

    Cliquez sur OK pour fermer l'éditeur du schéma. Dans la boîte de dialogue qui s'ouvre, cliquez sur Yes pour propager le schéma au composant suivant.

  6. Dans les champs Json query de la table Mapping, saisissez les requêtes JSONPath entre guillemets doubles pour spécifier les nœuds contenant les données souhaitées. Dans cet exemple, saisissez respectivement les requêtes JSONPath "title", "category", "author" et "price" relatives aux quatre nœuds enfant du nœud book.

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

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

    Comme affiché ci-dessus, les informations sur les livres sont extraites des données source JSON et affichées sous forme de table plate dans la console.

Scénario 3 : Extraire des données JSON d'un fichier en utilisant XPath

Basé sur Scénario 1 : Extraire des données JSON d'un fichier en utilisant le JSONPath sans configurer de nœud de boucle, ce scénario montre comment extraire le nom du magasin et les informations sur les livres à partir du fichier JSON Store.json qui utilise des requêtes XPath et comment afficher les données plates extraites dans la console.

  1. Dans le Studio, ouvrez le Job utilisé dans Scénario 1 : Extraire des données JSON d'un fichier en utilisant le JSONPath sans configurer de nœud de boucle pour l'afficher dans l'espace de modélisation graphique.

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

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

  4. Cliquez sur le bouton [...] à côté de Edit schema pour ouvrir l'éditeur du schéma.

    Sélectionnez les cinq colonnes ajoutées précédemment et cliquez sur le bouton [x] pour les supprimer toutes.

    Cliquez sur le bouton [+] pour ajouter cinq colonnes, store_name, book_title, book_category et book_author de type String et book_price de type Double.

    Cliquez sur OK pour fermer l'éditeur du schéma. Dans la boîte de dialogue qui s'ouvre, cliquez sur Yes pour propager le schéma au composant suivant.

  5. Dans le champ Loop XPath query, saisissez la requête XPath entre guillemets doubles pour spécifier sur quel nœud la boucle doit se baser. Dans cet exemple, "/store/goods/book".

  6. Dans les champs XPath query de la table Mapping, saisissez les requêtes XPath entre guillemets doubles pour spécifier les nœuds contenant les données souhaitées.

    • Pour la colonne store_name, saisissez la requête XPath "../../name" relative au nœud name.

    • Pour les colonnes book_title, book_category, book_author et book_price, saisissez respectivement les requêtes XPath "title", "category", "author" et "price" relatives aux quatre nœuds enfants du nœud book.

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

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

    Comme affiché ci-dessus, le nom du magasin, son adresse et les informations sur les livres sont extraites des données source JSON et affichées sous forme de table plate dans la console.

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

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.

    Comme affiché ci-dessus, les données sur les amis (friends) dans le fichier JSON spécifié en utilisant l'URL sont extraites puis les données du nœud friends sont extraites et affichées dans une table plate.