I denna Connected Learning Path kommer vi att skapa en kedja som illustrerar hur man konverterar ett JSON dataset med kapslade objekt till CSV. Vi kommer också att utforska hur man använder en cartesiansk join för att platta ut denna nästlade struktur.
| Primärt lärandemål | JSON Connector-kapacitet för nästlade JSON-objekt |
| Sekundära inlärningsmål | Tabular Transformation Avancerat Query-kommando |
| Förkunskapskrav | Konfigurera JSON Connector-anslutning Konfigurera HTTP Connector-anslutning |
| Mall för support | CLP | Åtkomst till JSON-nästlade objekt |
Steg 1: Skapa en kedja
- Lägg till en ny kedja.
- Namnge kedjan: CLP | Accessing JSON Nested Objects.
- Skapa en kedjevariabel och fyll i den med följande värden:
- Namn: cv-JSON-Donut
- Värde: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- Rädda kedjan.
Steg 2: Hämta JSON-data
Använd HTTP Connector för att hämta personalrelaterade data i JSON-format från en webbplats.
- Lägg till ett GET -kommando från HTTP Connector till Start-noden.
- Konfigurera kommandot med hjälp av följande värden:
Namn GET - JSON-data Användarens namn <leave> Lösenord <leave> CA-certifikat <leave> Certifikat <leave> Certifikat Privat nyckel <leave> Visa svar Markerad URL cv-JSON-Donut Kedjevariabel Frågesträng <leave> Typ av innehåll applikation/json Svar
<leave> - Spara kommandot.
Steg 3: Hämta icke-nästade JSON-data
Den här kedjan använder kommandot Object to CSV från JSON Connector för att extrahera namn- och typnycklarna, som inte är kapslade, från JSON -objektet.
Obs: Det är viktigt att förstå schemat för JSON-datauppsättningen. Ett List File Content Command från File Utilities Connector kan användas för att visualisera schemat. Som referens finns här schemat för JSON för "donut":
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"}] } - Lägg till ett objekt i CSV Kommando från JSON Connector till kedjan.
- Anslut startnoden (GET - JSON Data) till kommandot Object to CSV .
- Öppna Command och konfigurera det med hjälp av följande värden.
- Namnge kommandot: Objekt till CSV - Namn och typ.
- För parametern JSON Data väljer du Response Output från kommandot GET - JSON Data .
- Lämna parametrarna Input Text och Path to root tomma.
- Låt parametern Multi-value Delimiter vara ett kommatecken (,).
- Markera kryssrutan Preview Result .
- Välj Pipe för parametern Delimiter.
Avsnittet Columns används för att ange vilka element från JSON-objektet som ska extraheras till en kolumnformad (CSV) datauppsättning. - Klicka en gång på knappen Add för att lägga till två kolumner.
- För den första kolumnen anger du name för Column Name och .name för JSONPath-parametrarna.
- För den andra kolumnen anger du type för Column Type och .type för JSONPath-parametrarna.
- Spara kommandot.
Steg 4: 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.
- Lägg till en Array i CSV Kommando från JSON Connector till kedjan.
- Anslut kommandot GET - JSON Data till kommandot Array to CSV .
- Konfigurera kommandot med hjälp av följande värden:
- Namnge kommandot: Array till CSV - Toppings.
- För parametern JSON Data väljer du Response Output från kommandot GET - JSON Data .
- Lämna parametern Input Text tom.
- För parametern Path to root skriver du topping (med gemener) och trycker på Enter. Topping ska visas med ett likhetstecken framför sig i en grå bubbla.
- Lämna parametern Filter tom.
- Lämna standardvärdet kommatecken (,) för parametern Multi-value Delimiter .
- Markera kryssrutan Preview Result .
- 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 den första parametern Column name anger du ToppingID, och i parametern JSONPath anger du .id.
- I den andra parametern Column name anger du ToppingType, och i parametern JSONPath anger du .type.
- För parametern Delimiter väljer du Pipe.
- Spara kommandot.
Steg 5: Ta fram en lista över slagmännen
Den här kedjan använder kommandot Array to CSV i JSON Connector för att hämta listan över slagmän i den kapslade JSON-arrayen. Vi kommer att använda två Array to CSV kommandon för att extrahera smeten och påläggen eftersom de olika matriserna är olika inbäddade.
Genom att använda ett Object till CSV Kommando med nästlade JSONPaths (t.ex. .topping[*].type) skapas flerdelade värden som är svårare att använda i en CSV-datauppsättning.
- Lägg till en Array till CSV Kommando från JSON Connector till kedjan.
- Anslut kommandot GET - JSON Data till kommandot Array to CSV .
- Konfigurera kommandot med hjälp av följande värden:
- Namnge kommandot: Array till CSV - Batters.
- För parametern JSON Data väljer du Response Output från kommandot GET - JSON Data .
- Lämna parametern Input Text tom.
- För parametern Path to root skriver du batters (alla gemener) och trycker på Enter. Skriv sedan batter (alla små bokstäver) och tryck på Enter.
Slagmännen och slagman ska visas i denna ordning i två grå bubblor. - Lämna parametern Filter tom.
- Lämna standardvärdet 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 BatterID och i parametern JSONPath skriver du .id.
- I parametern Column name skriver du BatterType och i parametern JSONPath skriver du .type.
- För parametern Delimiter väljer du Pipe.
- Spara kommandot.
Steg 6: Platta till data
Vi kommer att använda en "Cartesian join" i en Advanced Query Command från Tabular Transformation Connector för att platta till datasetet. En Cartesian join skapar alla möjliga kombinationer av de element som vi extraherade med hjälp av kommandona Object to CSV och Array to CSV .
- Lägg till en Advanced Query Command från Tabular Transformation Connector i kedjan.
- Anslut var och en av Object to CSV - Name & Type, Array to CSV - Batters, och Array to CSV - Toppings Commands till Advanced Query Command.
- Konfigurera kommandot med hjälp av följande värden:
- Namnge kommandot: Advanced Query - Platta ut JSON-objekt.
- I avsnittet Tables klickar du två gånger på knappen Add så att det finns tre tillgängliga tabeller.
Fyll i tabellerna med hjälp av följande värden:Arkivering Bordets namn Välj konverterad fil Output från Object till CSV - Namn & Typ Command. Namn Välj konverterad fil Output från Array till CSV - Batters Command. Batter Välj konverterad fil Utdata från Array till CSV - Toppings Kommando. Topping - För parametern Query anger du följande:
Select Type as dessert_type, Name as variety, BatterType, ToppingType from Name, Batter, Topping - För parametrarna Input Delimiter och Output Delimiter ska du ange Pipe.
- Markera kryssrutan Förhandsgranska resultat .
- Spara kommandot.
Steg 7: Testa kedjan och granska resultaten AAA
- 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 Antal poster är 28.
- Välj fliken Loggar och bekräfta att förhandsgranskningen av data överensstämmer med följande skärmdump.
Om du vill lära dig mer om datatransformation med hjälp av kedjor kan du läsa Connected Learning Paths - Transformation Introduction.