In questo Percorso didattico collegato, creeremo una catena che illustra come convertire un set di dati JSON in CSV. In questo esempio di set di dati, c'è un array di oggetti annidati.
Questo percorso rafforza il concetto di looping appreso nell'esercizio JSON Data e il concetto di join cartesiano nel percorso JSON Nested Objects. Se non hai completato questi percorsi, ti consigliamo vivamente di completarli prima di completare questo.
| Obiettivo di apprendimento primario | Funzionalità del connettore JSON |
| Obiettivi didattici secondari | La potenza del Comando Query Avanzato di Trasformazione Tabulare, l'iterazione e la trasformazione delle variabili |
| Prerequisiti | |
| Template catena di supporto | CLP | Accesso ad array JSON di oggetti annidati |
Passo 1: Creare una catena
- Aggiungi una nuova catena
- Nome della catena: CLP | Accesso ad una matrice JSON di oggetti annidati
- Creare una variabile di catena
- Nome: cv-JSON-AllDonut
- Valore: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Salva la catena
Passo 2: Recuperare i dati JSON
Usa il connettore HTTP per recuperare i dati della ciambella da un sito web. Questo set di dati illustra un esempio di set di dati JSON più complesso con un array (più elementi) di oggetti annidati (attributi).
- Aggiungi un comando GET dal connettore HTTP al nodo Start.
- Configura il comando come segue:
| Nome | GET - Tutti i dessert |
| Nome utente | <leave blank> |
| Password | <leave blank> |
| Certificato CA | <leave blank> |
| Certificato | <leave blank> |
| Chiave privata del certificato | <leave blank> |
| Mostra risposta | Selezionata |
| URL | cv-JSON-AllDonut Variabile di catena |
| Stringa di query | <leave blank> |
| Tipo di contenuto | applicazione/json |
| Risposta | <leave blank> |
- Salva il comando
Passo 3: convertire JSON in CSV
Usa JSON Connector per estrarre le chiavi dall'array JSON per identificare le diverse varietà di ciambelle.
Per riferimento, di seguito è riportato lo schema del JSON di tutte le ciambelle:
Schema
[{"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"}]}]
- Aggiungi un array al comando CSV dal connettore JSON alla catena.
- Collega il nodo iniziale (GET - Tutti i dessert) al comando Array to CSV.
- Assegna un nome al comando: Array to CSV - Get Variety.
- Nel parametro JSON Data, seleziona la Response Output del comando GET - All Desserts.
- Lascia vuoti i parametri Testo di ingresso, Percorso verso la radice, e Filtro.
- Lascia il parametro Multi-value Delimiter come una virgola (,).
- Seleziona l'opzione Preview Result.
- Inserisci varietà per i parametri Column Name e .name per i parametri JSONPath.
- Seleziona Pipe per il parametro Delimiter.
- Salva il comando
Passo 4: creare un set di dati iterabile
Come già detto, l'insieme di dati ha un array (cioè più elementi) di oggetti annidati. Per elaborare ogni varietà individualmente, è necessario aggiungere i numeri di riga al set di dati. Questi numeri di riga verranno utilizzati nei successivi comandi da Array a CSV per identificare l'elemento dell'array (ciambella) per il quale verrà analizzato l'oggetto annidato (attributi).
Chi ha familiarità con Chain Builder potrebbe chiedersi perché utilizzare Advanced Query invece del comando Add Row Numbers. Il comando Aggiungi numeri di riga inizia il conteggio a uno (1) e noi dobbiamo iniziare il conteggio a zero (0) poiché gli array JSON sono basati su zero.
- Aggiungi un comando Advanced Query dal connettore Tabular Transformation alla catena.
- Collega l'array a CSV - Ottieni la varietà al comando Query avanzata.
- Nomina il comando: Query avanzata - Aggiungi numeri di riga.
- Configura la sezione Tabelle
- Nel campo File, specifica il file Converted File Output dal comando Array to CSV - Get Variety.
- Inserisci varieties nel parametro Table Name. La query specificata verrà eseguita su questa tabella.
- Nel parametro Query, inserisci quanto segue:
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- Specificare Pipe & Comma per i parametri Delimitatore di ingresso e Delimitatore di uscita, rispettivamente.
- Controlla il parametro Anteprima dei risultati.
- Salva il comando.
Passo 5: Creare un array JSON
Usa il comando CSV to JSON del JSON Connector per convertire l'elenco unico delle varietà in un array JSON. Un gruppo di comandi può quindi iterare su ogni elemento di questo array.
- Aggiungi un comando CSV a JSON dal connettore JSON alla catena.
- Collega il Comando Advanced Query - Add Row Numbers al Comando CSV to JSON.
- Configura il comando utilizzando le seguenti istruzioni:
| Nome | Da CSV a JSON - Varietà |
| File di input | Risultato Output del comando Query avanzata - Aggiungi numeri di riga |
| Delimitatore | Virgola (,) |
- Salva il comando
Passo 6: Aggiungere un gruppo di comandi
Aggiungi un Gruppo di Comandi alla Catena per abilitare l'iterazione su ciascuna delle varietà di ciambelle identificate nel passaggio Query avanzata.
- Aggiungi un gruppo di comandi alla catena.
- Collega il comando CSV to JSON - Varieties alla sezione In del Gruppo di Comandi.
- Clicca sul Gruppo di comandi e seleziona l'icona del contagocce per cambiare il colore del comando in giallo.
- Dai un nome al gruppo: Varietà di ciambelle.
- Attiva la levetta Iterazioni e seleziona il file JSON Output dal comando CSV a JSON - Varietà.
- Salva il gruppo di comandi.
Passo 7: Ottenere l'elenco dei condimenti
Usa il comando Array to CSV di JSON Connector per ottenere l'elenco dei topping nell'array JSON annidato. Questa azione viene ripetuta per ogni varietà di ciambella.
Presta particolare attenzione all'avvertenza contenuta nei seguenti passaggi indicati dal punto esclamativo rosso.
- Aggiungi un comando Array to CSV dal connettore JSON alla catena.
- Collega il Gruppo Inizio dal Gruppo di Comandi Varietà di ciambelle al Comando Array to CSV.
- Assegna un nome al comando: Array to CSV - Topping.
- Nel parametro JSON Data, seleziona la Response Output del comando GET - All Desserts.
- Lascia vuoto il parametro Input Text.
- Nel parametro Percorso della radice sfrutteremo il valore dell'iterazione per specificare l'elemento dell'array su cui opererà l'iterazione.
- I seguenti passaggi sono critici e devono essere letti integralmente prima di completare questo passaggio.
- Clicca sul parametro Path to root. Dal pannello di selezione delle variabili, espandi Group Iterator e clicca su JSON File Iteration.
- Clicca sulla bolla verde JSON File Iteration nel parametro Path to root. Si aprirà il modulo di trasformazione delle variabili. Seleziona Get Value from JSON e clicca sul segno più (+). Digita RowNum (case-sensitive) nel campo Value e premi il tasto invio. Clicca su Accetta.
- La variabile dovrebbe avere un asterisco che indica che è stata applicata la trasformazione in Variabile.
- Se uno di questi passaggi fallisce, cancella la variabile JSON File Iteration dal Percorso alla radice e ricomincia.
- Dopo la bolla JSON File Iteration, digita topping (minuscolo) e premi il tasto invio.
- I seguenti passaggi sono critici e devono essere letti integralmente prima di completare questo passaggio.
- Lascia vuoto il parametro Filtro.
- Lascia il valore predefinito come virgola (,) per il parametro Delimitatore multivalore.
- Controlla l'opzione Anteprima del risultato.
- Nella sezione Colonne, specifichiamo le chiavi dell'array JSON per le quali estrarre i valori in una colonna del CSV risultante.
- Nel parametro Nome colonna, inserisci topping e nel parametro JSONPath inserisci .type.
- Nel parametro Delimiter seleziona Comma.
- Salva il comando.
Passo 8: ottenere l'elenco dei battitori
Usa il comando Array to CSV del JSON Connector per ottenere l'elenco dei battitori nell'array JSON annidato. Questa azione viene ripetuta per ogni varietà di ciambella. Dato che questo passaggio è molto simile a quello precedente, copia il comando configurato nel passaggio precedente e aggiornalo semplicemente per le informazioni sulle pastelle.
- Copia il comando Array to CSV - Toppings.
- Collega il Gruppo Avvia dal Gruppo di Comandi Varietà di ciambelle al Comando Array to CSV - Toppings (Copia).
- Dai un nome al comando copiato: Array to CSV - Batters.
- Nel parametro Percorso verso la radice, elimina la bolla di riempimento cliccando sulla X. Digita battitori (maiuscolo/minuscolo) e premi invio. Quindi digita batter e premi invio. Dovrebbero esserci tre bolle nel parametro Path to root.
- Iterazione del file JSON *
- battitores
- pastella
- Nella sezione Colonne, cambia il nome della colonna da topping a batter.
- Salva il comando
Passo 9: appiattire i dati
Come nell'ultimo esercizio, usa un join cartesiano in un comando di query avanzata del connettore di trasformazione tabellare per appiattire il set di dati.
- Aggiungi un Comando Advanced Query dal Connettore Tabular Transformation alla Catena.
- Collega l'array a CSV - Batterie e array a CSV - Toppings Comandi al comando Query avanzata.
- Dai un nome al comando: Query avanzata - Appiattisci oggetto JSON.
- Nella sezione Tables, clicca una volta sul pulsante Add in modo da avere due tabelle disponibili. Completa la sezione Tabelle come indicato di seguito:
| File | Nome della tabella |
| File convertito Output dall'array a CSV - Batters Comando | Pastella |
| File convertito Output dall'array a CSV - Comando Topping | Topping |
-
Nel parametro Query, inserisci la seguente query:
Seleziona '<JSON>' come Varietà,Pastella,Topping da Pastella,Topping
-
- <JSON> deve essere selezionata e sostituita espandendo Group Iterator dal riquadro Variabili e selezionando JSON File Iteration.
- Dopo aver selezionato la variabile Iterazione file JSON, clicca sulla bolla verde per aprire il modulo di trasformazione della variabile.
- Applica la trasformazione Get Value from JSON Variable utilizzando variety per il campo Value.
- Assicurati di premere Invio dopo aver digitato Varietà e Accetta la trasformazione!
- Specifica Comma per i parametri Delimitatore di ingresso e Delimitatore di uscita.
- Controlla l'opzione Anteprima dei risultati.
- Salva il comando.
Passo 9: Prova l'esercizio
- Pubblica la Catena.
- Clicca su Execute e poi seleziona Run Chain.
- Una volta completata la Catena,
- Clicca sul nodo Advanced Query - Flatten JSON Object e seleziona la scheda Outputs. Conferma il numero di record per ogni iterazione:
- Iterazione 1: 28 record
- Iterazione 2: 5 record
- Iterazione 3: 8 record
- Clicca su Anteprima dei risultati (icona a forma di occhio) Per confermare la corrispondenza dei dati per ogni iterazione.
- Clicca sul nodo Advanced Query - Flatten JSON Object e seleziona la scheda Outputs. Conferma il numero di record per ogni iterazione:
Per saperne di più sulla trasformazione dei dati utilizzando le catene, consulta il sito Percorsi di formazione connessi - Introduzione alla trasformazione!