
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. |
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 :
| |
|
|
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.
| |
|
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.
|
|
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. |
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.
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.
Reliez le tFixedFlowInput au tWriteJSONField à l'aide d'un lien Row > Main.
Connectez le composant tWriteJSONField au tExtractJSONFields à l'aide d'un lien Row > Main.
Reliez le tExtractJSONFields au data_extracted à l'aide d'un lien Row > Main.
Reliez le tExtractJSONFields au reject_info à l'aide d'un lien Row > Reject.
Configurer le tFixedFlowInput
Double-cliquez sur le tFixedFlowInput pour afficher sa vue Basic settings.
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.
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
Cliquez sur le composant tWriteJSONField pour afficher sa vue Basic settings.
Cliquez sur Configure JSON Tree pour ouvrir l'éditeur d'arborescence XML.
Le schéma du tFixedFlowInput apparaît dans le panneau Linker source.
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.
Cliquez-droit sur staff et sélectionnez Add Sub-element dans le menu contextuel.
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.
Cliquez-droit sur firstname et sélectionnez Set As Loop Element dans le menu contextuel.
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.
Répétez les étapes pour relier les deux autres éléments.
Cliquez sur OK pour fermer l'éditeur d'arborescence XML.
Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.
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
Double-cliquez sur le tExtractJSONFields pour afficher sur la vue Basic settings.
Cliquez sur Edit schema pour ouvrir l'éditeur du schéma.
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.
Dans la boîte de dialogue [Propagate], cliquez sur Yes pour propager le schéma aux composants suivants.
Dans le champ Loop XPath query, saisissez "/staff", le nœud racine des données JSON.
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.
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.
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.
Déposez les composants suivantes de la Palette dans l'espace de modélisation graphique : un tFileInputJSON, un tExtractJSONFields et un tLogRow.
Reliez le tFileInputJSON au tExtractJSONFields à l'aide d'un lien Row > Main.
Reliez le tExtractJSONFields au tLogRow à l'aide d'un lien Row > Main.
Double-cliquez sur le tFileInputJSON pour afficher sa vue Basic settings.
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.
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" } ] } } ] } }
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.
Double-cliquez sur le tExtractJSONFields pour afficher sa vue Basic settings.
Cliquez sur Edit schema pour ouvrir l'éditeur de schéma.
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.
Dans la boîte de dialogue [Propagate] qui s'ouvre, cliquez sur Yes pour propager le schéma aux composants suivants.
Dans le champ Loop XPath query, saisissez "/likes/data".
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.
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.
Double-cliquez sur le tLogRow pour afficher sa vue Basic settings.
Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour un affichage optimal des résultats.