I denna Connected Learning Path kommer vi att skapa en kedja som illustrerar hur man konverterar ett JSON dataset till CSV. I det här exemplet på dataset finns det en array med nästlade objekt.
Den här sökvägen förstärker looping-konceptet som vi lärde oss i JSON Data-övningen samt det kartesiska join-konceptet i JSON Nested Objects-sökvägen. Om du inte har slutfört dessa banor rekommenderar vi starkt att du gör det innan du slutför den här.
| Primärt lärandemål | JSON Connector-funktioner |
| Sekundära inlärningsmål | Kraften i Tabular Transformation Advanced Query Command, iteration och variabelomvandling |
| Förkunskapskrav | |
| Mall för supportkedja | CLP | Åtkomst till JSON-array med nästlade objekt |
Steg 1: Skapa en kedja
- Lägg till en ny kedja
- Namnge kedjan: CLP | Åtkomst till JSON-array med nästlade objekt
- Skapa en kedjevariabel
- Namn: cv-JSON-AllDonut
- Värde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Rädda kedjan
Steg 2: Hämta JSON-data
Använd HTTP Connector för att hämta munkdata från en webbplats. Detta dataset illustrerar ett exempel på ett mer komplext JSON dataset med en array (flera objekt) av nästlade objekt (attribut).
- Lägg till ett GET-kommando från HTTP Connector till Start-noden.
- Konfigurera kommandot med följande:
| Namn | GET - Alla desserter |
| Användarens namn | <leave> |
| Lösenord | <leave> |
| CA-certifikat | <leave> |
| Certifikat | <leave> |
| Certifikat Privat nyckel | <leave> |
| Visa svar | Markerad |
| URL | cv-JSON-AllDonut Kedjevariabel |
| Frågesträng | <leave> |
| Typ av innehåll | applikation/json |
| Svar | <leave> |
- Spara kommandot
Steg 3: Konvertera JSON till CSV
Använd JSON Connector för att extrahera nycklar från JSON-arrayen för att identifiera de olika munksorterna.
Som referens visas nedan schemat för all-donuts JSON:
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"}]}]
- Lägg till en Array i CSV Kommando från JSON Connector till kedjan.
- Anslut startnoden (GET - All Desserts) till Array till CSV Command.
- Namnge kommandot: Array to CSV - Get Variety.
- I parametern JSON Data väljer du Response Output från GET - All Desserts Command.
- Lämna parametrarna Input Text, Path to root, och Filter tomma.
- Låt parametern Multi-value Delimiter vara ett kommatecken (,).
- Kontrollera alternativet Förhandsgranskning av resultat.
- Ange variety för Column Name och .name för JSONPath parametrar.
- Välj Pipe för parametern Delimiter.
- Spara kommandot
Steg 4: Skapa en itererbar datamängd
Som nämnts har datasetet en matris (dvs. flera objekt) av nästlade objekt. För att behandla var och en av sorterna individuellt måste radnummer läggas till i datasetet. Dessa radnummer kommer att användas i efterföljande Array to CSV-kommandon för att identifiera det objekt (donut) för vilket det kapslade objektet (attributen) ska analyseras.
För dem som känner till Chain Builder kanske du undrar varför vi använder Advanced Query i motsats till kommandot Add Row Numbers. Kommandot Add Row Numbers börjar räkna vid ett (1) och vi måste börja räkna vid noll (0) eftersom JSON Arrays är nollbaserade.
- Lägg till en Advanced Query Command från Tabular Transformation Connector till kedjan.
- Koppla Array till CSV - Get Variety Kommando till Advanced Query Kommando.
- Namnge kommandot: Advanced Query - Lägg till radnummer.
- Konfigurera avsnittet Tabeller
- I fältet File anger du Converted File Output from the Array to CSV - Get Variety Command.
- Ange sorter i Tabellnamn parameter. Den fråga som anges kommer att köras mot den här tabellen.
- I parametern Query (Fråga) anger du följande:
SELECT
ROW_NUMBER () OVER (
ORDER BY sort
)-1 RowNum,
sort
FROM
sorter
- Ange Pipe & Comma för parametrarna Input Delimiter respektive Output Delimiter.
- Kontrollera parametern Förhandsgranskning av resultat.
- Spara kommandot.
Steg 5: Skapa en JSON-array
Använd kommandot CSV to JSON från JSON Connector för att konvertera den unika listan med sorter till en JSON-array. En Command Group kan sedan iterera över varje objekt i denna array.
- Lägg till en CSV till JSON Kommando från JSON Connector till kedjan.
- Anslut kommandot Advanced Query - Add Row Numbers till kommandot CSV to JSON.
- Konfigurera kommandot med hjälp av följande:
| Namn | CSV till JSON - Varianter |
| Inmatningsfil | Resultat Utdata från Advanced Query - Lägg till radnummer Kommando |
| Skiljetecken | Komma (,) |
- Spara kommandot
Steg 6: Lägg till en kommandogrupp
Lägg till en kommandogrupp i kedjan för att möjliggöra iteration över var och en av de munksorter som identifierades i steget för avancerad fråga.
- Lägg till en kommandogrupp i kedjan.
- Anslut CSV to JSON - Varieties Command till In avsnitt i Command Group.
- Klicka på kommandogruppen och välj sedan droppikonen för att ändra kommandofärgen till gul.
- Namnge gruppen: Donutvarianter.
- Aktivera omkopplaren Iterations och välj JSON File Output från CSV to JSON - Varieties Command.
- Spara kommandogruppen.
Steg 7: Hämta listan över toppings
Använd kommandot Array to CSV i JSON Connector för att hämta listan med pålägg i den kapslade JSON-arrayen. Denna åtgärd upprepas för var och en av munksorterna.
⚠ Var särskilt uppmärksam på varningstexten i nedanstående steg som markeras med rött utropstecken.
- Lägg till en Array i CSV Kommando från JSON Connector till kedjan.
- Anslut Group Start från Donut Varieties Command Group till Array to CSV Command.
- Namnge kommandot: Array till CSV - Toppings.
- I parametern JSON Data väljer du Response Output från GET - All Desserts Command.
- Lämna parametern Input Text tom.
- I parametern Path to root kommer vi att utnyttja iterationsvärdet för att ange det objekt i matrisen som iterationen ska användas på.
- Följande steg är kritiska och bör läsas i sin helhet innan slutför detta steg.
- Klicka i parametern Path to root. I rutan Variabelval expanderar du Group Iterator och klickar på JSON File Iteration.
- Klicka på den gröna JSON File Iteration bubblan i parametern Path to root. Då öppnas formuläret Variable transformation. Välj Hämta värde från JSON och klicka på plustecknet ( ). Skriv RowNum (skiftlägeskänslig) i fältet Value och tryck på Enter. Klicka på Godkänn.
- Variabeln bör ha en asterisk som anger att en variabelomvandling har tillämpats.
- 🛑 Om något av dessa steg går inte, ta bort JSON File Iteration Variable från sökvägen till roten och börja om.
- Efter bubblan JSON File Iteration skriver du topping (gemener) och trycker på enter-tangenten.
- Följande steg är kritiska och bör läsas i sin helhet innan slutför detta steg.
- Lämna parametern Filter tom.
- Låt standardvärdet vara kommatecken (,) för parametern Multi-value Delimiter.
- Kontrollera alternativet Förhandsgranskning av resultat.
- I avsnittet Columns anger vi nyckeln/nycklarna i JSON-arrayen för vilken/vilka värdet/värdena ska extraheras till en kolumn i den resulterande CSV-filen.
- I parametern Column name skriver du topping och i parametern JSONPath skriver du .type.
- I parametern Delimiter väljer du Comma.
- Spara kommandot.
Steg 8: Hämta listan över slagmän
Använd kommandot Array to CSV i JSON Connector för att hämta listan över slagmän i den kapslade JSON-arrayen. Denna åtgärd upprepas för var och en av munksorterna. Eftersom det här steget är mycket likt det föregående kopierar du det Command som konfigurerades i det föregående steget och uppdaterar det med information om slagmännen.
- Kopiera Array till CSV - Toppings Command.
- Anslut Group Start från Donut Varieties Command Group till Array till CSV - Toppings (Copy) Command.
- Namnge det kopierade kommandot: Array till CSV - Batters.
- I parametern Path to root tar du bort den toppande bubblan genom att klicka på X. Skriv batters (case-sensitive) och tryck på enter. Skriv sedan batter och tryck på enter. Det ska finnas tre bubblor i parametern Path to root.
- JSON-filens iteration *
- batters
- slagg
- I avsnittet Kolumner ändrar du kolumnnamnet från toppar till batter.
- Spara kommandot
Steg 9: Platta till data
På samma sätt som i den förra övningen använder du en kartesisk join i ett Advanced Query Command från Tabular Transformation Connector för att platta till datasetet.
- Lägg till en Advanced Query Command från Tabular Transformation Connector i kedjan.
- Anslut kommandona Array to CSV - Batters och Array to CSV - Toppings till kommandot Advanced Query.
- Namnge kommandot: Advanced Query - Platta ut JSON-objekt.
- I avsnittet Tables klickar du en gång på knappen Add så att det finns två tillgängliga tabeller. Fyll i avsnittet Tabeller enligt nedan:
| Arkivering | Bordets namn |
| Konverterade filen Utdata från Array till CSV - Batters Command | Batter |
| Konvertera filen Utdata från Array till CSV - Toppings Command | Topping |
-
I parametern Query skriver du in nedanstående fråga:
Välj '<JSON>' som Variety,Batter,Topping från Batter,Topping
-
- <JSON> ska markeras och ersättas genom att expandera Group Iterator från variabelrutan och markera JSON File Iteration.
- När du har valt variabeln JSON File Iteration klickar du på den gröna bubblan, vilket öppnar formuläret Variable transformation.
- Tillämpa transformationen Get Value from JSON Variable med hjälp av variety för fältet Value.
- Var noga med att trycka på enter efter att ha skrivit sort och Godkänn omvandlingen!
- Ange Comma för parametrarna Input Delimiter och Output Delimiter.
- Kontrollera alternativet Förhandsgranskning av resultat.
- Spara kommandot.
Steg 9: Testa övningen
- Publicera kedjan.
- Klicka på Execute och välj sedan Run Chain.
- När kedjan har avslutats,
- Klicka på noden Advanced Query - Flatten JSON Object och välj fliken Outputs. Bekräfta antalet poster för varje iteration:
- Iteration 1: 28 poster
- Iteration 2: 5 poster
- Iteration 3: 8 poster
- Klicka på Förhandsgranskning av resultat (ögonikon) Bekräfta datamatchningarna för varje iteration.
- Klicka på noden Advanced Query - Flatten JSON Object och välj fliken Outputs. Bekräfta antalet poster för varje iteration:
Om du vill lära dig mer om datatransformation med hjälp av kedjor kan du kolla in Connected Learning Paths - Transformation Introduction!