In dit Aangesloten Leerpad zullen we een Ketting maken die illustreert hoe u een JSON-gegevensset met geneste objecten kunt converteren naar CSV. We zullen ook onderzoeken hoe we een cartesiaanse join kunnen gebruiken om deze geneste structuur af te vlakken.
| Primair leerdoel | JSON Connector mogelijkheid voor geneste JSON objecten |
| Secundaire leerdoelen | Tabulaire transformatie Geavanceerd Query-commando |
| Vereisten | JSON-connectorverbinding configureren HTTP-connectorverbinding configureren |
| Ondersteunende sjabloon | CLP | JSON geneste objecten openen |
Stap 1: Maak een ketting
- Een nieuwe ketting toevoegen.
- Geef de Chain een naam: CLP | Accessing JSON Nested Objects.
- Maak een kettingvariabele en vul deze met de volgende waarden:
- Naam: cv-JSON-Donut
- Waarde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Red de ketting.
Stap 2: JSON-gegevens ophalen
Gebruik de HTTP Connector om headcount-gerelateerde gegevens in JSON-formaat op te halen van een weblocatie.
- Voeg een opdracht GET van de HTTP Connector toe aan het knooppunt Start.
- Configureer de opdracht met de volgende waarden:
Naam GET - JSON-gegevens Gebruikersnaam <laat leeg> Wachtwoord <laat leeg> CA-certificaat <laat leeg> Certificaat <laat leeg> Certificaat Privé Sleutel <laat leeg> Antwoord tonen Gecontroleerd URL cv-JSON-Donut Kettingvariabele Querystring <laat leeg> Type inhoud toepassing/json Reactie
<laat leeg> - Sla de opdracht op.
Stap 3: Un-Nested JSON-gegevens verkrijgen
Deze keten gebruikt de opdracht Object to CSV van de JSON Connector om de naam- en typesleutels, die niet genest zijn, uit het JSON-object te halen.
Opmerking: Het is belangrijk om het schema van de JSON dataset te begrijpen. Een opdracht List File Content van de File Utilities Connector kan worden gebruikt om het schema te visualiseren. Ter referentie is hier het schema van de "donut" 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":"Suiker"},{"id":"5007","type":"Poedersuiker"}, {"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5003","type":"Chocolate"}, {"id":"5004","type":"Maple"}] } - Voeg een Object to CSV opdracht van de JSON Connector toe aan de ketting.
- Verbind het Startknooppunt (GET - JSON Data) met de opdracht Object to CSV.
- Open de opdracht en configureer deze met de volgende waarden.
- Geef de opdracht een naam: Object naar CSV - Naam & Type.
- Selecteer voor de parameter JSON Data de uitvoer Response van de opdracht GET - JSON Data.
- Laat de parameters Input Text en Path to root leeg.
- Laat de parameter Multi-value Delimiter een komma (,).
- Schakel het selectievakje Preview Result in.
- Selecteer Pipe voor de parameter Delimiter.
De sectie Columns wordt gebruikt om aan te geven welke elementen uit het JSON object geëxtraheerd moeten worden naar een kolomvormige (CSV) dataset. - Klik eenmaal op de knop Add om twee kolommen toe te voegen.
- Voer voor de eerste kolom name in voor de Column Name en .name voor de JSONPath parameters.
- Voer voor de tweede kolom type in voor de Kolom Type en .type voor de JSONPath parameters.
- Sla de opdracht op.
Stap 4: Vraag de lijst met Toppings op
Gebruik het Array to CSV commando van de JSON Connector om de lijst met toppings in de geneste JSON array te krijgen.
- Voeg een Array to CSV opdracht van de JSON Connector toe aan de ketting.
- Verbind de opdracht GET - JSON Data met de opdracht Array to CSV.
- Configureer de opdracht met de volgende waarden:
- Geef de opdracht een naam: Array naar CSV - Toppings.
- Selecteer voor de parameter JSON Data de uitvoer Response van de opdracht GET - JSON Data.
- Laat de parameter Input Text leeg.
- Typ voor de parameter Path to root topping (in kleine letters) en druk op Enter. Topping zou moeten verschijnen met een gelijkheidsteken ervoor in een grijze bel.
- Laat de parameter Filter leeg.
- Laat de standaardwaarde van komma (,) voor de parameter Multi-value Delimiter staan.
- Schakel het selectievakje Preview Result in.
- In het gedeelte Columns specificeren we de sleutel(s) in de JSON array waarvoor de waarde(n) naar een kolom in de resulterende CSV moet(en) worden geëxtraheerd.
- Voer voor de eerste parameter Kolomnaam ToppingID in en voer in de parameter JSONPath .id in.
- Voor de tweede parameter Kolomnaam voert u ToppingType in en voor de parameter JSONPath voert u .type in.
- Selecteer voor de parameter Delimiter de parameter Pipe.
- Sla de opdracht op.
Stap 5: Maak een lijst van de Batters
Deze keten gebruikt de opdracht Array to CSV in de JSON Connector om de lijst met slagmensen in de geneste JSON-array te krijgen. We zullen twee Array to CSV opdrachten gebruiken om het beslag en de toppings te extraheren, vanwege de verschillende nesting van elke array.
Door een Object naar CSV commando te gebruiken met geneste JSONPaths (bijvoorbeeld .topping[*].type) ontstaan meerdelige waarden, die moeilijker te gebruiken zijn in een CSV-gegevensset.
- Voeg een Array to CSV opdracht van de JSON Connector toe aan de ketting.
- Verbind de opdracht GET - JSON Data met de opdracht Array to CSV.
- Configureer de opdracht met de volgende waarden:
- Noem de opdracht: Array naar CSV - Batters.
- Selecteer voor de parameter JSON Data de uitvoer Response van de opdracht GET - JSON Data.
- Laat de parameter Input Text leeg.
- Typ voor de parameter Path to root batters (allemaal kleine letters) en druk op Enter. Typ vervolgens batter (allemaal kleine letters) en druk op Enter.
Slagman en slagman moeten in deze volgorde in twee grijze bollen verschijnen. - Laat de parameter Filter leeg.
- Laat de standaardwaarde, komma (,), staan voor de parameter Scheidingsteken tussen meerdere waarden.
- Vink de optie Voorbeeldresultaat aan.
- In het gedeelte Kolommen specificeren we de sleutel(s) in de JSON-array waarvoor de waarde(n) naar een kolom in de resulterende CSV moet(en) worden geëxtraheerd.
- Voer in de parameter Kolomnaam BatterID in en voer in de parameter JSONPath .id in.
- In de parameter Kolomnaam voert u BatterType in en in de parameter JSONPath voert u .type in.
- Selecteer voor de parameter Delimiter Pipe.
- Sla de opdracht op.
Stap 6: De gegevens afvlakken
We gebruiken een "Cartesian join" in een Advanced Query opdracht van de Tabular Transformation Connector om de dataset plat te maken. Een Cartesian join creëert alle mogelijke combinaties van de elementen die we hebben geëxtraheerd met de opdrachten Object to CSV en Array to CSV.
- Voeg een Advanced Query opdracht van de Tabular Transformation Connector toe aan de Chain.
- Verbind elk van de opdrachten Object to CSV - Name & Type, Array to CSV - Batters, en Array to CSV - Toppings met de opdracht Advanced Query.
- Configureer de opdracht met de volgende waarden:
- Geef de opdracht een naam: Geavanceerde query - JSON-object afvlakken.
- Klik in het gedeelte Tabellen tweemaal op de knop Toevoegen zodat er drie beschikbare tabellen zijn.
Vul de Tabellen in met de volgende waarden:Bestand Naam tabel Selecteer geconverteerde bestandsuitvoer van het Object naar CSV - Naam & Type Opdracht. Naam Selecteer geconverteerd bestand Uitvoer van de Array naar CSV - Batters Opdracht. Batter Selecteer geconverteerd bestand Uitvoer van de Array naar CSV - Toppings opdracht. Topping - Voer voor de parameter Query het volgende in:
Selecteer Type als desserttype, Naam als variëteit, BatterType, ToppingType van Naam, Batter, Topping - Geef voor de parameters Input Delimiter en Output Delimiter Pipe op.
- Schakel het selectievakje Voorbeeldresultaten in.
- Sla de opdracht op.
Stap 7: Test de ketting en bekijk de resultaten AAA
- 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 dat de Record Count 28 is.
- Selecteer het tabblad Logs, en controleer of het voorbeeld van de gegevens overeenkomt met de volgende schermafbeelding.
Om meer te leren over datatransformatie met behulp van Chains, kunt u kijken op Connected Learning Paths - Transformation Introduction.