In dit Aangesloten Leerpad zullen we een Ketting maken die illustreert hoe u een JSON dataset naar CSV kunt converteren. In deze voorbeelddataset is er een array van geneste objecten.
Dit pad versterkt het lus-concept dat we hebben geleerd in de oefening JSON Data, evenals het concept van Cartesian join in het pad JSON Nested Objects. Als u deze paden nog niet hebt voltooid, raden wij u ten zeerste aan om ze te voltooien voordat u dit pad voltooit.
| Primair leerdoel | JSON Connector mogelijkheden |
| Secundaire leerdoelen | De kracht van het Tabular Transformation Advanced Query Command, iteratie en variabele transformatie |
| Vereisten | |
| Sjabloon voor ondersteunende keten | CLP | JSON-array met geneste objecten openen |
Stap 1: Maak een ketting
- Een nieuwe ketting toevoegen
- Geef de Chain een naam: CLP | JSON-array van geneste objecten openen
- Maak een kettingvariabele
- Naam: cv-JSON-AllDonut
- Waarde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Red de Ketting
Stap 2: JSON-gegevens ophalen
Gebruik de HTTP Connector om donutgegevens van een weblocatie op te halen. Deze dataset illustreert een voorbeeld van een complexere JSON-dataset met een array (meerdere items) van geneste objecten (attributen).
- Voeg een GET-commando van de HTTP Connector toe aan het Start-knooppunt.
- Configureer het commando met het volgende:
| Naam | GET - Alle Desserts |
| Gebruikersnaam | <laat leeg> |
| Wachtwoord | <laat leeg> |
| CA-certificaat | <laat leeg> |
| Certificaat | <laat leeg> |
| Certificaat Privé Sleutel | <laat leeg> |
| Antwoord tonen | Gecontroleerd |
| URL | cv-JSON-AllDonut Kettingvariabele |
| Querystring | <laat leeg> |
| Type inhoud | toepassing/json |
| Reactie | <laat leeg> |
- De opdracht opslaan
Stap 3: JSON omzetten naar CSV
Gebruik de JSON Connector om sleutels uit de JSON array te halen om de verschillende donutvariëteiten te identificeren.
Ter referentie staat hieronder het schema van de 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":"Poedersuiker"},{"id":"5006","type":"Chocolade met 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"}]}]
- Voeg een Array to CSV opdracht van de JSON Connector toe aan de ketting.
- Verbind het Startknooppunt (GET - All Desserts) met het commando Array to CSV.
- Noem de opdracht: Array to CSV - Get Variety.
- Selecteer in de parameter JSON Data de uitvoer Response van de opdracht GET - All Desserts.
- Laat de parameters Input Text, Path to root, en Filter leeg.
- Laat de parameter Multi-value Delimiter een komma (,).
- Vink de optie Voorbeeldresultaat aan.
- Voer variëteit in voor de Kolomnaam en .name voor de JSONPath parameters.
- Selecteer Pipe voor de parameter Delimiter.
- De opdracht opslaan
Stap 4: Een itereerbare gegevensreeks maken
Zoals opgemerkt, heeft de dataset een array (d.w.z. meerdere items) van geneste objecten. Om elk ras afzonderlijk te verwerken, moeten rijnummers aan de dataset worden toegevoegd. Deze rijnummers worden in volgende Array to CSV-commando's gebruikt om het array-item (donut) te identificeren waarvoor het geneste object (attributen) wordt geparseerd.
Voor degenen die bekend zijn met Chain Builder, vraagt u zich misschien af waarom we Advanced Query gebruiken in plaats van het Add Row Numbers-commando. Het Add Row Numbers-commando begint te tellen bij één (1) en wij moeten beginnen te tellen bij nul (0) omdat JSON Arrays op nul gebaseerd zijn.
- Voeg een Advanced Query opdracht van de Tabular Transformation Connector toe aan de ketting.
- Verbind de Array met CSV - Get Variety opdracht met de Advanced Query opdracht.
- Geef de opdracht een naam: Geavanceerde query - Rijnummers toevoegen.
- De sectie Tabellen configureren
- Geef in het veld Bestand het geconverteerde bestand op Uitvoer van de opdracht Array to CSV - Get Variety.
- Voer variëteiten in de parameter Tabelnaam in. De opgegeven query wordt tegen deze tabel uitgevoerd.
- Voer in de parameter Query het volgende in:
SELECT
ROW_NUMBER () OVER (
ORDER BY variëteit
)-1 RowNum,
variëteit
FROM
variëteiten
- Geef Pipe & Comma op voor respectievelijk de parameters Input Delimiter en Output Delimiter.
- Controleer de parameter Voorbeeldresultaten.
- Sla de opdracht op.
Stap 5: Een JSON-array maken
Gebruik het CSV to JSON commando van de JSON Connector om de unieke lijst met variëteiten te converteren naar een JSON array. Een opdrachtgroep kan dan elk item in deze matrix itereren.
- Voeg een CSV to JSON opdracht van de JSON Connector toe aan de ketting.
- Verbind de opdracht Advanced Query - Row Numbers toevoegen met de opdracht CSV to JSON.
- Configureer de opdracht als volgt:
| Naam | CSV naar JSON - Variëteiten |
| Invoerbestand | Resultaat Uitvoer van de opdracht Geavanceerde query - Rijnummers toevoegen |
| Scheidingsteken | Komma (,) |
- De opdracht opslaan
Stap 6: Een commandogroep toevoegen
Voeg een opdrachtgroep toe aan de ketting om iteratie op elk van de donutvariëteiten mogelijk te maken die in de stap Geavanceerde query zijn geïdentificeerd.
- Voeg een Commandogroep toe aan de ketting.
- Verbind de opdracht CSV to JSON - Varieties met het gedeelte In van de opdrachtgroep.
- Klik op de Commandogroep en selecteer vervolgens het pipetpictogram om de Commandokleur te wijzigen in geel.
- Noem de groep: Donutvariëteiten.
- Schakel de optie Iteraties in en selecteer de optie JSON-bestand Uitvoer van de opdracht CSV to JSON - Varieties.
- Sla de commandogroep op.
Stap 7: Verkrijg de lijst met Toppings
Gebruik het Array to CSV commando van de JSON Connector om de lijst met toppings in de geneste JSON array te krijgen. Deze handeling wordt herhaald voor elk van de donutvariëteiten.
⚠ Let vooral op de waarschuwingen in de onderstaande stappen, aangegeven met het rode uitroepteken.
- Voeg een Array to CSV opdracht van de JSON Connector toe aan de ketting.
- Verbind de Groep Start van de Donutvariëteiten opdrachtgroep met de Array to CSV opdracht.
- Geef de opdracht een naam: Array naar CSV - Toppings.
- Selecteer in de parameter JSON Data de uitvoer Response van de opdracht GET - All Desserts.
- Laat de parameter Input Text leeg.
- In de parameter Path to root zullen we de iteratiewaarde gebruiken om het array-item te specificeren waarop de iteratie zal werken.
- De volgende stappen zijn kritisch en moeten in hun geheel worden gelezen voordat u deze stap voltooit.
- Klik in de parameter Path to root. Vouw in het deelvenster Variabele selectie de Group Iterator uit en klik op JSON File Iteration.
- Klik op de groene JSON File Iteration bel in de Path to root parameter. Dit opent het formulier Variabele transformatie. Selecteer Waarde uit JSON halen en klik op het plusteken (+). Typ RowNum (hoofdlettergevoelig) In het veld Waarde en druk op de enter-toets. Klik op accepteren .
- De variabele moet een sterretje hebben om aan te geven dat er een Variabele transformatie is toegepast.
- 🛑 Als een van deze stappen mislukt, verwijdert u de JSON-bestandsintervalvariabele uit het pad naar de root en begint u opnieuw.
- Typ na de JSON File Iteration bubble topping (kleine letters) en druk op de enter-toets.
- De volgende stappen zijn kritisch en moeten in hun geheel worden gelezen voordat u deze stap voltooit.
- Laat de parameter Filter leeg.
- Laat de standaardwaarde als komma (,) staan voor de parameter Multi-value Delimiter.
- Vink de optie Voorbeeldresultaat aan.
- In het gedeelte Kolommen specificeren we de sleutel(s) in de JSON-array waarvoor we de waarde(n) willen extraheren naar een kolom in de resulterende CSV.
- Voer in de parameter Kolomnaam topping in en voer in de parameter JSONPath .type in.
- Selecteer in de parameter Scheidingsteken Komma.
- Sla de opdracht op.
Stap 8: Verkrijg de lijst met Batters
Gebruik het Array to CSV-commando van de JSON Connector om de lijst met slagmensen in de geneste JSON-array te krijgen. Deze handeling wordt herhaald voor elk van de donutvariëteiten. Aangezien deze stap erg lijkt op de vorige stap, kopieert u het Commando dat in de vorige stap is geconfigureerd en werkt u dit eenvoudigweg bij voor de informatie over de slagman.
- Kopieer de Array naar CSV - Toppings Opdracht.
- Verbind de opdrachtgroep Start van de opdrachtgroep Donutvariëteiten met de opdracht Array to CSV - Toppings (Copy).
- Geef het gekopieerde commando een naam: Array naar CSV - Slagman.
- Verwijder in de parameter Path to root de topping bubble door op de X te klikken. Typ batters (hoofdlettergevoelig) en druk op enter. Typ vervolgens batter en druk op enter. Er moeten drie bellen staan in de parameter Pad naar root.
- JSON-bestand Iteratie *
- slagmans
- beslag
- Verander in het gedeelte Kolommen de Kolomnaam van naar naar beslag.
- De opdracht opslaan
Stap 9: De gegevens afvlakken
Net als bij de vorige oefening gebruikt u een Cartesian join in een Advanced Query Command van de Tabular Transformation Connector om de dataset af te vlakken.
- Voeg een Advanced Query opdracht van de Tabular Transformation Connector toe aan de Chain.
- Verbind de Array met CSV - Batters en Array met CSV - Toppings Opdrachten met de Geavanceerde query Opdracht.
- Geef de opdracht een naam: Geavanceerde query - JSON-object afvlakken.
- Klik in het gedeelte Tabellen eenmaal op de knop Toevoegen zodat er twee beschikbare tabellen zijn. Vul de tabellen in zoals hieronder aangegeven:
| Bestand | Naam tabel |
| Geconverteerd bestand Uitvoer van de Array naar CSV - Slagman Opdracht | Batter |
| Geconverteerd bestand Uitvoer van de Array naar CSV - Toppings Opdracht | Topping |
-
Voer in de parameter Query de onderstaande query in:
Selecteer '<JSON BESTAND ITERATIE>' als Variatie,Batter,Topping uit Batter,Topping
-
- <JSON FILE ITERATION> moet worden geselecteerd en vervangen door Group Iterator uit te vouwen in het deelvenster Variable en JSON File Iteration te selecteren.
- Nadat u de JSON File Iteration Variable hebt geselecteerd, klikt u op de groene tekstballon, waarmee u het Variable transformation-formulier opent.
- Pas de transformatie Get Value from JSON Variable toe met variëteit voor het veld Waarde.
- Zorg ervoor dat u na het typen van variety op enter drukt en de transformatie accepteert!
- Geef Comma op voor de parameters Input Delimiter en Output Delimiter.
- Vink de optie Voorbeeldresultaten aan.
- Sla de opdracht op.
Stap 9: De oefening testen
- Publiceer de keten.
- Klik op Uitvoeren en selecteer vervolgens Keten uitvoeren.
- Zodra de Chain voltooid is,
- Klik op het knooppunt Advanced Query - Flatten JSON Object en selecteer het tabblad Outputs. Bevestig de opnametelling voor elke iteratie:
- Iteratie 1: 28 records
- Iteratie 2: 5 records
- Iteratie 3: 8 records
- Klik op Voorbeeldresultaten (oogpictogram) Bevestig dat de gegevens voor elke iteratie overeenkomen.
- Klik op het knooppunt Advanced Query - Flatten JSON Object en selecteer het tabblad Outputs. Bevestig de opnametelling voor elke iteratie:
Om meer te leren over datatransformatie met behulp van Chains, kunt u de Connected Learning Paths - Transformation Introduction bekijken!