In questo Percorso didattico collegato, creeremo una catena che illustra come convertire un set di dati JSON con oggetti annidati in CSV. Inoltre, vedremo come utilizzare un join cartesiano per appiattire questa struttura annidata.
| Obiettivo di apprendimento primario | Capacità di JSON Connector per gli oggetti JSON annidati |
| Obiettivi didattici secondari | Comando di query avanzata per la trasformazione tabellare |
| Prerequisiti | Configurare la connessione del connettore JSON Configurare la connessione del connettore HTTP |
| Modello di supporto | CLP | Accedere agli oggetti JSON annidati |
Passo 1: Creare una catena
- Aggiungi una nuova catena.
- Dai un nome alla Catena: CLP | Accessing JSON Nested Objects.
- Crea una variabile di catena e popolala con i seguenti valori:
- Nome: cv-JSON-Donut
- Valore: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Salva la catena.
Passo 2: Recuperare i dati JSON
Usa il connettore HTTP per recuperare i dati relativi all'organico in formato JSON da un sito web.
- Aggiungi un comando GET dal connettore HTTP al nodo Inizio.
- Configura il comando utilizzando i seguenti valori:
Nome GET - Dati JSON 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-Donut Variabile di catena Stringa di query <leave blank> Tipo di contenuto applicazione/json Risposta
<leave blank> - Salva il comando.
Passo 3: Ottenere dati JSON non annidati
Questa catena utilizza il comando Object to CSV del connettore JSON per estrarre le chiavi del nome e del tipo, che non sono annidate, dall'oggetto JSON.
Nota: È importante comprendere lo schema del dataset JSON. Un comando List File Content del connettore File Utilities può essere utilizzato per visualizzare lo schema. Come riferimento, ecco lo schema del JSON "ciambella":
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"}] } - Aggiungi un oggetto al comando CSV dal connettore JSON alla catena.
- Collega il nodo iniziale (GET - Dati JSON) al comando Object to CSV.
- Apri il comando e configuralo utilizzando i seguenti valori.
- Dai un nome al comando: Object to CSV - Name & Type.
- Per il parametro JSON Data, seleziona il parametro Response Output dal comando GET - JSON Data.
- Lascia vuoti i parametri Input Text e Path to root.
- Lascia il parametro Multi-value Delimiter come una virgola (,).
- Segna la casella di controllo Preview Result.
- Seleziona Pipe per il parametro Delimiter.
La sezione Columns serve a specificare quali elementi dell'oggetto JSON saranno estratti in un dataset in colonne (CSV). - Clicca una volta sul pulsante Add per aggiungere due colonne.
- Per la prima colonna, inserisci nome per il nome della colonna e .nome per i parametri JSONPath.
- Per la seconda colonna, inserisci tipo per la colonna tipo e .tipo per i parametri JSONPath.
- Salva il comando.
Passo 4: Ottenere l'elenco dei condimenti
Usa il comando Array to CSV del connettore JSON per ottenere l'elenco dei topping nell'array JSON annidato.
- Aggiungi un comando Array to CSV dal connettore JSON alla catena.
- Collega il comando GET - JSON Data al comando Array to CSV.
- Configura il comando utilizzando i seguenti valori:
- Assegna un nome al comando: Array to CSV - Toppings.
- Per il parametro JSON Data, seleziona il parametro Response Output dal comando GET - JSON Data.
- Lascia vuoto il parametro Input Text.
- Per il parametro Path to root, digita topping (in minuscolo) e premi Invio. Il topping deve essere preceduto da un segno di uguale in una bolla grigia.
- Lascia vuoto il parametro Filtro.
- Lascia il valore predefinito di virgola (,) per il parametro Delimitatore multivalore.
- Seleziona la casella di controllo Preview Result.
- Nella sezione Columns specifichiamo le chiavi dell'array JSON per le quali estrarre i valori di una colonna nel CSV risultante.
- Per il primo parametro Column name, inserisci ToppingID, e nel parametro JSONPath inserisci .id.
- Per il secondo parametro Column name, inserisci ToppingType, e nel parametro JSONPath inserisci .type.
- Per il parametro Delimiter, seleziona Pipe.
- Salva il comando.
Passo 5: Ottenere l'elenco dei battitori
Questa catena utilizza il comando Array to CSV nel JSON Connector per ottenere l'elenco delle pastelle nell'array JSON annidato. Utilizzeremo due comandi Array to CSV per estrarre le pastelle e i condimenti a causa della diversa nidificazione di ciascun array.
L'utilizzo di un comando Object to CSV con percorsi JSON annidati (ad esempio, .topping[*].type) crea valori in più parti, più difficili da utilizzare in un set di dati CSV.
- Aggiungi un comando Array to CSV dal connettore JSON alla catena.
- Collega il comando GET - JSON Data al comando Array to CSV.
- Configura il comando utilizzando i seguenti valori:
- Assegna un nome al comando: Array to CSV - Batters.
- Per il parametro JSON Data, seleziona la Response Output dal comando GET - JSON Data.
- Lascia vuoto il parametro Input Text.
- Per il parametro Percorso verso la radice, digita battitori (tutto minuscolo) e premi Invio. Quindi digita battitore (tutto minuscolo) e premi Invio.
I battitori e battitore dovrebbero apparire in questo ordine in due bolle grigie. - Lascia vuoto il parametro Filtro.
- Lascia il valore predefinito, 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 di una colonna nel CSV risultante.
- Per il parametro Column name, inserisci BatterID e nel parametro JSONPath inserisci .id.
- Per il parametro Column name, inserisci BatterType e nel parametro JSONPath inserisci .type.
- Per il parametro Delimiter, seleziona Pipe.
- Salva il comando.
Passo 6: appiattire i dati
Utilizzeremo un "join cartesiano" in un comando Advanced Query del Tabular Transformation Connector per appiattire il set di dati. Un join cartesiano crea tutte le possibili combinazioni degli elementi che abbiamo estratto utilizzando i comandi Object to CSV e Array to CSV.
- Aggiungi un Comando di Query Avanzata dal Connettore di Trasformazione Tabellare alla Catena.
- Collega ogni oggetto a CSV - Nome e tipo, Array a CSV - Battitori, e Array a CSV - Toppings Comandi per il comando Query avanzata.
- Configura il comando utilizzando i seguenti valori:
- Dai un nome al comando: Query avanzata - Appiattisci oggetto JSON.
- Nella sezione Tables, clicca due volte sul pulsante Add in modo da avere tre tabelle disponibili.
Completa le Tabelle utilizzando i seguenti valori:File Nome della tabella Seleziona il file convertito Output dell'Oggetto in CSV - Nome e Tipo. Nome Seleziona il file convertito dall'array al comando CSV - Batters. Pastella Seleziona il file convertito dal comando Array to CSV - Topping. Topping - Per il parametro Query inserisci:
Select Type as dessert_type, Name as variety, BatterType, ToppingType from Name, Batter, Topping - Per i parametri Input Delimiter e Output Delimiter, specifica Pipe.
- Segna la casella di controllo Anteprima dei risultati.
- Salva il comando.
Passo 7: Prova la catena e rivedi i risultati AAA
- 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 che Record Count è 28.
- Seleziona la scheda Logs e conferma che l'anteprima dei dati corrisponda alla seguente schermata.
Per saperne di più sulla trasformazione dei dati utilizzando le catene, consulta Percorsi didattici collegati - Introduzione alla trasformazione.