Dans ce parcours d'apprentissage connecté, nous allons créer une chaîne qui illustre comment convertir un ensemble de données JSON avec des objets imbriqués en CSV. Nous verrons également comment utiliser une jointure cartésienne pour aplanir cette structure imbriquée.
| Objectif d'apprentissage principal | Capacité du connecteur JSON à gérer des objets JSON imbriqués |
| Objectifs d'apprentissage secondaires | Transformation tabulaire Commande de requête avancée |
| Conditions préalables | Configurer la connexion au connecteur JSON Configurer la connexion au connecteur HTTP |
| Modèle de support | CLP | Accès aux objets imbriqués JSON |
Étape 1 : Créer une chaîne
- Ajoutez une nouvelle chaîne.
- Nommez la chaîne : CLP | Accès aux objets imbriqués JSON.
- Créez une variable de chaîne et renseignez-la à l’aide des valeurs suivantes :
- Nom : cv-JSON-Donut
- Valeur : https ://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Sauvez la chaîne.
Étape 2 : Récupérer les données JSON
Utilisez le connecteur HTTP pour récupérer les données relatives aux effectifs au format JSON à partir d'un site web.
- Ajouter une commande OBTENIR du connecteur HTTP au nœud de départ.
- Configurez la commande en utilisant les valeurs suivantes :
Nom GET - Données JSON Nom de l'utilisateur <leave blank> Mot de passe <leave blank> Certificat CA <leave blank> Certificat <leave blank> Clé privée du certificat <leave blank> Afficher la réponse Vérifié URL cv-JSON-Donut Chaîne de variables Chaîne de requête <leave blank> Type de contenu application/json Réponse
<leave blank> - Sauvegarder la commande.
Étape 3 : Obtenir des données JSON non imbriquées
Cette chaîne utilise la commande Object to CSV du connecteur JSON pour extraire les clés de nom et de type, qui ne sont pas imbriquées, de l’objet JSON.
Note : Il est important de comprendre le schéma de l’ensemble de données JSON. Une commande List File Content du connecteur File Utilities peut être utilisée pour visualiser le schéma. Pour référence, voici le schéma du JSON « donut » :
Schéma :
{"id » :"0001 »,"type » :"donut »,"name » :"Cake »,"ppu » :0,55,"batters » : {"batter » :[{"id » :"1001 »,"type » :"Regular »},{"id » :"1002 »,"type » :"Chocolate »}, {"id » :"1003 »,"type » :"Blueberry »},{"id » :"1004 »,"type » :"Devil’s Food »}]}, « topping » :[{"id » :"5001 »,"type » :"None »},{"id » :"5002 »,"type » :"Glazed »}, {"id » :"5005 »,"type » :"Sugar »},{"id » :"5007 »,"type » :"Powdered Sugar »}, {"id » :"5006 »,"type » :"Chocolate with Sprinkles »},{"id » :"5003 »,"type » :"Chocolate »}, {"id » :"5004 »,"type » :"Maple »}] } - Ajouter un objet à la commande CSV du connecteur JSON à la chaîne.
- Connectez le nœud de départ (GET - JSON Data) à la commande Object to CSV.
- Ouvrez la commande et configurez-la en utilisant les valeurs suivantes.
- Nommez la commande : Object to CSV - Nom et type.
- Pour le paramètre JSON Data, sélectionnez Response Output from the GET - JSON Data Command.
- Laissez les paramètres Input Text et Path to root vides.
- Laissez le paramètre Multi-value Delimiter à la virgule (,).
- Cochez la case Preview Result.
- Sélectionnez Pipe pour le paramètre Delimiter.
La section Columns permet de spécifier les éléments de l’objet JSON qui seront extraits dans un jeu de données en colonnes (CSV). - Cliquez une fois sur le bouton Add pour ajouter deux colonnes.
- Pour la première colonne, entrez name pour le Column Name et .name pour les paramètres JSONPath.
- Pour la deuxième colonne, entrez type pour la colonne type et .type pour les paramètres JSONPath.
- Sauvegarder la commande.
Étape 4 : Obtenir la liste des garnitures
Utilisez la commande Array to CSV du connecteur JSON pour obtenir la liste des toppings dans le tableau JSON imbriqué.
- Ajoutez une commande Array to CSV du connecteur JSON à la chaîne.
- Connectez la commande GET - JSON Data à la commande Array to CSV.
- Configurez la commande en utilisant les valeurs suivantes :
- Nom de la commande : Array to CSV - Toppings.
- Pour le paramètre JSON Data, sélectionnez la réponse Output de la commande GET - JSON Data.
- Laissez le paramètre Input Text vide.
- Pour le paramètre Path to root, tapez topping (en minuscules) et appuyez sur Entrée. L’adresse doit être précédée d’un signe égal dans une bulle grise.
- Laissez le paramètre Filter vide.
- Laissez la valeur par défaut de virgule (,) pour le paramètre Multi-value Delimiter.
- Cochez la case Preview Result.
- Dans la section Columns, nous spécifions la ou les clés du tableau JSON pour lesquelles il faut extraire la ou les valeurs d’une colonne dans le CSV résultant.
- Pour le premier paramètre Column name, entrez ToppingID, et dans le paramètre JSONPath, entrez .id.
- Pour le deuxième paramètre Column name, entrez ToppingType, et dans le paramètre JSONPath, entrez .type.
- Pour le paramètre Delimiter, sélectionnez Pipe.
- Sauvegarder la commande.
Étape 5 : Obtenir une liste des batteurs
Cette chaîne utilise la commande Array to CSV dans le connecteur JSON pour obtenir la liste des batteurs dans le tableau JSON imbriqué. Nous utiliserons deux commandes Array to CSV pour extraire les pâtes et les garnitures en raison de l’imbrication différente de chaque tableau.
L’utilisation d’une commande Object to CSV avec des chemins JSONPaths imbriqués (par exemple, .topping[*].type) crée des valeurs en plusieurs parties, qui sont plus difficiles à utiliser dans un ensemble de données CSV.
- Ajoutez une commande Array to CSV du connecteur JSON à la chaîne.
- Connectez la commande GET - JSON Data à la commande Array to CSV.
- Configurez la commande en utilisant les valeurs suivantes :
- Nom de la commande : Array to CSV - Batters.
- Pour le paramètre JSON Data, sélectionnez la réponse Output de la commande GET - JSON Data.
- Laissez le paramètre Input Text vide.
- Pour le paramètre Path to root, tapez batters (en minuscules) et appuyez sur Entrée. Tapez ensuite batter (en minuscules) et appuyez sur Entrée.
Les batteurs et batter devraient apparaître dans cet ordre dans deux bulles grises. - Laissez le paramètre Filter vide.
- Laissez la valeur par défaut, virgule (,), pour le paramètre Multi-value Delimiter.
- Cochez l'option Preview Result.
- Dans la section Colonnes, nous spécifions la ou les clés du tableau JSON pour lesquelles nous devons extraire la ou les valeurs d’une colonne dans le CSV résultant.
- Pour le paramètre Column name, entrez BatterID et dans le paramètre JSONPath, entrez .id.
- Pour le paramètre Column name, entrez BatterType et dans le paramètre JSONPath, entrez .type.
- Pour le paramètre Delimiter, sélectionnez Pipe.
- Sauvegarder la commande.
Étape 6 : Aplatir les données
Nous utiliserons une « jointure cartésienne » dans une commande Advanced Query du Tabular Transformation Connector pour aplatir l’ensemble de données. Une jointure cartésienne crée toutes les combinaisons possibles des éléments que nous avons extraits à l’aide des commandes Object to CSV et Array to CSV.
- Ajouter une commande Advanced Query de Tabular Transformation Connector à la chaîne.
- Connectez chacun des objets à CSV - Nom et type, Tableau à CSV - Batteurs, et Tableau à CSV - Toppings Commandes de la commande Advanced Query.
- Configurez la commande en utilisant les valeurs suivantes :
- Nommez la commande : Requête avancée - Aplatir un objet JSON.
- Dans la section Tables, cliquez deux fois sur le bouton Add afin que trois tables soient disponibles.
Complétez les tableaux en utilisant les valeurs suivantes :Fichier Nom du tableau Sélectionnez le fichier converti de la commande Object to CSV - Name & ; Type. Nom Sélectionnez le fichier converti Output from the Array to CSV - Batters Command. Batterie Sélectionnez le fichier converti en sortie de la commande Array to CSV - Toppings. Garniture - Pour le paramètre Query, entrez ce qui suit :
Select Type as dessert_type, Name as variety, BatterType, ToppingType from Name, Batter, Topping - Pour les paramètres Input Delimiter et Output Delimiter, spécifiez Pipe.
- Cochez la case Preview results.
- Sauvegarder la commande.
Étape 7 : Test de la chaîne et examen des résultats AAA
- Publier la chaîne.
- Cliquez sur Exécutez puis sélectionnez Exécutez la chaîne.
- Une fois la chaîne terminée,
- Cliquez sur le nœud Advanced Query - Flatten JSON Object et sélectionnez l'onglet Outputs.
- Confirmez que Record Count est 28.
- Sélectionnez l’onglet Logs et confirmez que l’aperçu des données correspond à la capture d’écran suivante.
Pour en savoir plus sur la transformation des données à l’aide de chaînes, consultez Connected Learning Paths - Transformation Introduction.