Dans ce parcours d'apprentissage connecté, nous allons créer une chaîne qui illustre comment convertir un ensemble de données JSON en CSV. Dans cet exemple d'ensemble de données, il y a un tableau d'objets imbriqués.
Ce chemin renforce le concept de bouclage que nous avons appris dans l'exercice sur les données JSON ainsi que le concept de jointure cartésienne dans le chemin sur les objets imbriqués JSON. Si vous n'avez pas suivi ces parcours, nous vous recommandons vivement de le faire avant de suivre celui-ci.
| Objectif d'apprentissage principal | Capacités du connecteur JSON |
| Objectifs d'apprentissage secondaires | La puissance de la commande de requête avancée Tabular Transformation, de l'itération et de la transformation de variables |
| Conditions préalables | |
| Modèle de chaîne de soutien | CLP | Accès à un tableau JSON d'objets imbriqués |
Étape 1 : Créer une chaîne
- Ajouter une nouvelle chaîne
- Nommez la chaîne : CLP | Accès à un tableau JSON d'objets imbriqués
- Créer une variable de chaîne
- Nom : cv-JSON-AllDonut
- Valeur : https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Sauver la chaîne
Étape 2 : Récupérer les données JSON
Utilisez le connecteur HTTP pour récupérer des données sur les beignets à partir d'un site web. Cet ensemble de données illustre un exemple d'ensemble de données JSON plus complexe avec un tableau (plusieurs éléments) d'objets imbriqués (attributs).
- Ajouter une commande OBTENIR du connecteur HTTP au nœud de départ.
- Configurez la commande comme suit :
| Nom | GET - Tous les desserts |
| 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 | Variable de chaîne cv-JSON-AllDonut |
| Chaîne de requête | <leave blank> |
| Type de contenu | application/json |
| Réponse | <leave blank> |
- Enregistrer la commande
Étape 3 : Convertir JSON en CSV
Utilisez le connecteur JSON pour extraire les clés du tableau JSON afin d'identifier les différentes variétés de beignets.
Pour référence, voici le schéma du JSON de all-donuts :
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"}]},{"id":"0002","type":"donut","name":"Raised","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]},{"id":"0003","type":"donut","name":"Old Fashioned","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]}]
- Ajouter un tableau au CSV Commande du connecteur JSON à la chaîne.
- Connectez le nœud de départ (GET - All Desserts) à la commande Array to CSV.
- Nom de la commande : Array to CSV - Get Variety.
- Dans le paramètre JSON Data, sélectionnez la réponse Output de la commande GET - All Desserts.
- Laissez les paramètres Saisir Texte, Chemin vers la racine et Filtre vides.
- Laissez le paramètre Multi-value Delimiter à la virgule (,).
- Cochez l'option Preview Result.
- Saisissez variety pour les paramètres Column Name et .name pour les paramètres JSONPath.
- Sélectionnez Pipe pour le paramètre Delimiter.
- Enregistrer la commande
Étape 4 : Créer un ensemble de données itérable
Comme indiqué, l'ensemble de données comporte un tableau (c'est-à-dire plusieurs éléments) d'objets imbriqués. Pour traiter chaque variété individuellement, des numéros de ligne doivent être ajoutés à l'ensemble de données. Ces numéros de ligne seront utilisés dans les commandes "Array to CSV" suivantes pour identifier l'élément du tableau (donut) pour lequel l'objet imbriqué (attributs) sera analysé.
Les personnes familiarisées avec Chain Builder se demanderont peut-être pourquoi nous utilisons Advanced Query plutôt que la commande Add Row Numbers. La commande Add Row Numbers commence à compter à partir de un (1) et nous devons commencer à compter à partir de zéro (0) puisque les tableaux JSON sont basés sur zéro.
- Ajouter une commande Advanced Query de Tabular Transformation Connector à la chaîne.
- Connecter le tableau à CSV - Obtenir la variété Commande à la Advanced Query Commande.
- Nommez la commande : Requête avancée - Ajouter des numéros de ligne.
- Configurer la section Tables
- Dans le champ File, indiquez le fichier converti Output from the Array to CSV - Get Variety Command.
- Saisissez les variétés dans le paramètre Nom du tableau. La requête spécifiée sera exécutée sur cette table.
- Dans le paramètre Query, entrez ce qui suit :
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- Spécifiez Pipe & Virgule pour les paramètres Délimiteur d'entrée et Délimiteur de sortie, respectivement.
- Vérifiez le paramètre Preview results.
- Sauvegarder la commande.
Étape 5 : Créer un tableau JSON
Utilisez la commande CSV to JSON du connecteur JSON pour convertir la liste unique des variétés en un tableau JSON. Un groupe de commande peut alors itérer sur chaque élément de ce tableau.
- Ajouter une commande CSV to JSON du connecteur JSON à la chaîne.
- Connectez la commande Advanced Query - Add Row Numbers à la commande CSV to JSON.
- Configurez la commande comme suit :
| Nom | CSV vers JSON - Variétés |
| Fichier d'entrée | Résultat Sortie de la commande Advanced Query - Add Row Numbers |
| Séparateur | Virgule (,) |
- Enregistrer la commande
Étape 6 : Ajouter un groupe de commande
Ajoutez un groupe de commandes à la chaîne pour permettre l'itération sur chacune des variétés de beignets identifiées à l'étape de la requête avancée.
- Ajouter un groupe de commandes à la chaîne.
- Connectez la commande CSV to JSON - Varieties à la section In du groupe de commandes.
- Cliquez sur le groupe de commande, puis sélectionnez l'icône de la pipette pour changer la couleur de la commande en jaune.
- Nom du groupe : Variétés de beignets.
- Activez le bouton Itérations et sélectionnez la sortie Fichier JSON de la commande CSV vers JSON - Variétés.
- Sauvegarder le groupe de commande.
Étape 7 : Obtenir la liste des garnitures
Utilisez la commande Array to CSV du connecteur JSON pour obtenir la liste des garnitures dans le tableau JSON imbriqué. Cette opération est répétée pour chacune des variétés de beignets.
Veuillez prêter une attention particulière à la mise en garde figurant dans les étapes ci-dessous, indiquée par le point d'exclamation rouge.
- Ajouter un tableau au CSV Commande du connecteur JSON à la chaîne.
- Connectez le groupe Start au groupe Donut Varieties Command Group à la commande Array to CSV Command.
- Nom de la commande : Array to CSV - Toppings.
- Dans le paramètre JSON Data, sélectionnez la réponse Output de la commande GET - All Desserts.
- Laissez le paramètre Input Text vide.
- Dans le paramètre Path to root, nous utiliserons la valeur de l'itération pour spécifier l'élément du tableau sur lequel l'itération opérera.
- Les étapes suivantes sont critiques et doivent être lues dans leur intégralité avant de compléter cette étape.
- Cliquez sur le paramètre Path to root. Dans le volet de sélection des variables, développez le site Group Iterator et cliquez sur JSON File Iteration.
- Cliquez sur la bulle verte JSON File Iteration dans le paramètre Path to root. Le formulaire de transformation des variables s'ouvre alors. Sélectionnez Get Value from JSON et cliquez sur le signe plus ( ). Tapez RowNum (sensible à la casse) dans le champ Value et appuyez sur la touche Entrée. Cliquez sur Acceptez.
- La variable doit être marquée d'un astérisque indiquant qu'une transformation de variable a été appliquée.
- 🛑 Si l'une de ces étapes échoue, supprimez la variable d'itération du fichier JSON du chemin d'accès à la racine et recommencez.
- Après la bulle JSON File Iteration, tapez topping (minuscule) et appuyez sur la touche entrée.
- Les étapes suivantes sont critiques et doivent être lues dans leur intégralité avant de compléter cette étape.
- Laissez le paramètre Filter vide.
- Laissez la valeur par défaut de la 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 il faut extraire la ou les valeurs d'une colonne dans le CSV résultant.
- Dans le paramètre Column name, entrez topping et dans le paramètre JSONPath, entrez .type.
- Dans le paramètre Délimiteur, sélectionnez Virgule.
- Sauvegarder la commande.
Étape 8 : Obtenir la liste des batteurs
Utilisez la commande Array to CSV du connecteur JSON pour obtenir la liste des batteurs dans le tableau JSON imbriqué. Cette opération est répétée pour chacune des variétés de beignets. Comme cette étape est très similaire à l'étape précédente, copiez la commande configurée dans l'étape précédente et mettez-la simplement à jour avec les informations sur les batteurs.
- Copier le tableau dans un fichier CSV - Commande Toppings.
- Connectez le groupe Start à partir du groupe de commandes Donut Varieties à la commande Array to CSV - Toppings (Copy).
- Nommez la commande copiée : Tableau vers CSV - Batters.
- Dans le paramètre Path to root, supprimez la bulle de tête en cliquant sur le X. Tapez batters (sensible à la casse) et appuyez sur la touche Entrée. Tapez ensuite batter et appuyez sur la touche Entrée. Il doit y avoir trois bulles dans le paramètre Path to root.
- Fichier JSON Iteration *
- pâte à frires
- pâte
- Dans la section Colonnes, changez le nom de la colonne de à en batter.
- Enregistrer la commande
Étape 9 : Aplatir les données
Comme dans l'exercice précédent, utilisez une jointure cartésienne dans une commande de requête avancée du connecteur de transformation tabulaire pour aplatir l'ensemble de données.
- Ajouter une commande Advanced Query de Tabular Transformation Connector à la chaîne.
- Connectez les commandes Array to CSV - Batters et Array to CSV - Toppings à la commande Advanced Query.
- Nommez la commande : Requête avancée - Aplatir un objet JSON.
- Dans la section Tables, cliquez une fois sur le bouton Add afin que deux tables soient disponibles. Complétez la section des tableaux selon le modèle ci-dessous :
| Fichier | Nom du tableau |
| Fichier converti Output from the Array to CSV - Batters Command | Batterie |
| Fichier converti Output from the Array to CSV - Toppings Command | Garniture |
-
Dans le paramètre Query, saisissez la requête ci-dessous :
Select '<JSON>' as Variety,Batter,Topping from Batter,Topping
-
- <JSON> doit être sélectionné et remplacé en développant Group Iterator dans le volet Variable et en sélectionnant JSON File Iteration.
- Après avoir sélectionné la variable JSON File Iteration, cliquez sur la bulle verte, ce qui ouvrira le formulaire de transformation de la variable.
- Appliquer la transformation Get Value from JSON Variable en utilisant la variété pour le champ Value.
- Veillez à appuyer sur la touche "Entrée" après avoir tapé "Variété" et "Accepter la transformation" !
- Spécifiez Virgule pour les paramètres Délimiteur d'entrée et Délimiteur de sortie.
- Cochez l'option Prévisualiser les résultats.
- Sauvegarder la commande.
Étape 9 : Tester l'exercice
- Publier la chaîne.
- Cliquez sur Execute et sélectionnez ensuite Run Chain.
- Une fois la chaîne terminée,
- Cliquez sur le nœud Advanced Query - Flatten JSON Object et sélectionnez l'onglet Outputs. Confirmer le nombre d'enregistrements pour chaque itération :
- Itération 1 : 28 enregistrements
- Itération 2 : 5 enregistrements
- Itération 3 : 8 enregistrements
- Cliquez sur Preview Results (icône de l'œil) Confirmez les correspondances de données pour chaque itération.
- Cliquez sur le nœud Advanced Query - Flatten JSON Object et sélectionnez l'onglet Outputs. Confirmer le nombre d'enregistrements pour chaque itération :
Pour en savoir plus sur la transformation des données à l'aide des chaînes, consultez le site Connected Learning Paths - Transformation Introduction!