In diesem Connected Learning Path werden wir eine Kette erstellen, die veranschaulicht, wie ein JSON-Datensatz in CSV konvertiert wird. In diesem Beispieldatensatz gibt es ein Array von verschachtelten Objekten.
Dieser Pfad verstärkt das Schleifenkonzept, das wir in der Übung zu JSON-Daten gelernt haben, sowie das Konzept der kartesischen Verknüpfung im Pfad zu verschachtelten JSON-Objekten. Wenn Sie diese Pfade noch nicht absolviert haben, empfehlen wir Ihnen dringend, sie vor dem Abschluss dieses Pfades zu absolvieren.
| Primäres Lernziel | JSON Connector-Fähigkeiten |
| Sekundäre Lernziele | Die Leistungsfähigkeit des erweiterten Abfragebefehls für tabellarische Transformation, Iteration und Variablentransformation |
| Voraussetzungen | |
| Vorlage für die Unterstützungskette | CLP | Zugriff auf JSON-Array mit verschachtelten Objekten |
Schritt 1: Erstellen einer Kette
- Eine neue Kette hinzufügen
- Benennen Sie die Kette: CLP | Zugriff auf JSON-Array mit verschachtelten Objekten
- Erstellen Sie eine Kettenvariable
- Name: cv-JSON-AllDonut
- Wert: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Rettet die Kette
Schritt 2: Abrufen von JSON-Daten
Verwenden Sie den HTTP-Connector, um Donut-Daten von einem Webstandort abzurufen. Dieser Datensatz veranschaulicht ein Beispiel für einen komplexeren JSON-Datensatz mit einem Array (mehrere Elemente) von verschachtelten Objekten (Attributen).
- Fügen Sie einen GET-Befehl vom HTTP-Connector zum Startknoten hinzu.
- Konfigurieren Sie den Befehl wie folgt:
| Name | GET - Alle Nachspeisen |
| Name des Benutzers | <leer lassen> |
| Kennwort | <leer lassen> |
| CA-Zertifikat | <leer lassen> |
| Zertifikat | <leer lassen> |
| Privater Schlüssel des Zertifikats | <leer lassen> |
| Antwort anzeigen | Geprüft |
| URL | cv-JSON-AllDonut Kettenvariable |
| Abfrage-Zeichenfolge | <leer lassen> |
| Inhaltstyp | Anwendung/json |
| Antwort | <leer lassen> |
- Speichern Sie den Befehl
Schritt 3: JSON in CSV umwandeln
Verwenden Sie den JSON Connector, um Schlüssel aus dem JSON-Array zu extrahieren, um die verschiedenen Donut-Sorten zu identifizieren.
Nachfolgend finden Sie das Schema des JSON für alle Donuts als Referenz:
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"}]}]
- Fügen Sie einen Array to CSV Befehl aus dem JSON Connector in die Kette ein.
- Verbinden Sie den Startknoten (GET - All Desserts) mit dem Befehl Array to CSV.
- Nennen Sie den Befehl: Array zu CSV – Vielfalt erhalten.
- Wählen Sie im Parameter JSON Data die Antwort Output aus dem Befehl GET - All Desserts.
- Lassen Sie die Parameter Input Text, Path to root und Filter leer.
- Belassen Sie den Parameter Multi-value Delimiter bei einem Komma (,).
- Aktivieren Sie die Option Ergebnisvorschau.
- Geben Sie variety für die Parameter Column Name und .name für die Parameter JSONPath ein.
- Wählen Sie Pipe für den Parameter Delimiter.
- Speichern Sie den Befehl
Schritt 4: Erstellen eines iterierbaren Datensatzes
Wie bereits erwähnt, besteht der Datensatz aus einem Array (d. h. aus mehreren Elementen) verschachtelter Objekte. Um jede Sorte einzeln zu bearbeiten, müssen dem Datensatz Zeilennummern hinzugefügt werden. Diese Zeilennummern werden in nachfolgenden Array-zu-CSV-Befehlen verwendet, um das Array-Element (Donut) zu identifizieren, für das das verschachtelte Objekt (Attribute) geparst werden soll.
Diejenigen, die mit dem Chain Builder vertraut sind, werden sich vielleicht fragen, warum wir die Erweiterte Abfrage und nicht den Befehl Zeilennummern hinzufügen verwenden. Der Befehl zum Hinzufügen von Zeilennummern beginnt die Zählung bei eins (1), und wir müssen die Zählung bei null (0) beginnen, da JSON-Arrays nullbasiert sind.
- Fügen Sie einen Advanced Query Befehl aus dem Tabular Transformation Connector in die Kette ein.
- Verbinden Sie das Array mit CSV - Get Variety Befehl mit dem Advanced Query Befehl.
- Benennen Sie den Befehl: Erweiterte Abfrage - Zeilennummern hinzufügen.
- Konfigurieren Sie den Abschnitt Tabellen
- Geben Sie im Feld Datei die Konvertierte Datei Ausgabe des Befehls Array to CSV - Get Variety an.
- Geben Sie Sorten in den Parameter Tabellenname ein. Die angegebene Abfrage wird auf diese Tabelle angewendet.
- Geben Sie im Parameter Query Folgendes ein:
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- Geben Sie Pipe & Comma für die Parameter Input Delimiter und Output Delimiter an.
- Überprüfen Sie den Parameter Vorschauergebnisse.
- Speichern Sie den Befehl.
Schritt 5: Erstellen eines JSON-Arrays
Verwenden Sie den Befehl CSV to JSON vom JSON Connector, um die eindeutige Sortenliste in ein JSON-Array zu konvertieren. Eine Befehlsgruppe kann dann über jedes Element in diesem Array iterieren.
- Fügen Sie einen CSV zu JSON Befehl vom JSON Connector zur Kette hinzu.
- Verbinden Sie den Befehl Erweiterte Abfrage - Zeilennummern hinzufügen mit dem Befehl CSV zu JSON.
- Konfigurieren Sie den Befehl wie folgt:
| Name | CSV zu JSON – Arten |
| Eingabe-Datei | Ergebnis Ausgabe des Befehls Erweiterte Abfrage - Zeilennummern hinzufügen |
| Trennzeichen | Komma (,) |
- Speichern Sie den Befehl
Schritt 6: Hinzufügen einer Befehlsgruppe
Fügen Sie der Kette eine Befehlsgruppe hinzu, um die Iteration über jede der im Schritt Erweiterte Abfrage identifizierten Donut-Sorten zu ermöglichen.
- Fügen Sie der Kette eine Befehlsgruppe hinzu.
- Verbinden Sie den Befehl CSV to JSON - Varieties mit dem Abschnitt In der Befehlsgruppe.
- Klicken Sie auf die Befehlsgruppe und wählen Sie dann das Tropfensymbol, um die Farbe des Befehls in gelb zu ändern.
- Benennen Sie die Gruppe: Donut-Sorten.
- Aktivieren Sie den Schalter Iterationen und wählen Sie die JSON-Datei-Ausgabe von CSV zu JSON – Arten-Befehl.
- Speichern Sie die Befehlsgruppe.
Schritt 7: Abrufen der Liste der Beläge
Verwenden Sie den Befehl Array to CSV des JSON Connectors, um die Liste der Toppings in dem verschachtelten JSON-Array zu erhalten. Dieser Vorgang wird für jede der Donut-Sorten wiederholt.
Bitte beachten Sie insbesondere den mit einem roten Ausrufezeichen versehenen Warnhinweis in den folgenden Schritten.
- Fügen Sie einen Array to CSV Befehl aus dem JSON Connector in die Kette ein.
- Verbinden Sie die Gruppe Start von der Donut-Sorten Befehlsgruppe mit dem Befehl Array zu CSV.
- Benennen Sie den Befehl: Array zu CSV - Toppings.
- Wählen Sie im Parameter JSON Data die Antwort Output aus dem Befehl GET - All Desserts.
- Lassen Sie den Parameter Input Text leer.
- Im Parameter Path to root wird der Iterationswert verwendet, um das Array-Element anzugeben, auf das die Iteration angewendet wird.
- Die folgenden Schritte sind kritisch und sollten vollständig gelesen werden, bevor Sie diesen Schritt ausführen.
- Klicken Sie auf den Parameter Path to root. Erweitern Sie im Variablenauswahlbereich den Group Iterator und klicken Sie auf JSON File Iteration.
- Klicken Sie auf die grüne Blase JSON File Iteration im Parameter Path to root. Dadurch wird das Formular für die Variablentransformation geöffnet. Wählen Sie Wert von JSON erhalten und klicken Sie auf das Pluszeichen (+). Geben Sie RowNum (Groß- und Kleinschreibung beachten) in das Feld Value ein und drücken Sie die Eingabetaste. Klicken Sie auf Akzeptieren Sie.
- Die Variable sollte mit einem Sternchen versehen sein, um anzuzeigen, dass eine Variablentransformation durchgeführt wurde.
- 🛑 Wenn einer dieser Schritte fehlschlägt, löschen Sie die Variable „JSON-Datei-Iteration“ Variable aus dem Path to root und beginnen Sie erneut.
- Geben Sie nach der JSON File Iteration Bubble topping (Kleinschreibung) ein und drücken Sie die Eingabetaste.
- Die folgenden Schritte sind kritisch und sollten vollständig gelesen werden, bevor Sie diesen Schritt ausführen.
- Lassen Sie den Parameter Filter leer.
- Belassen Sie den Standardwert als Komma (,) für den Parameter Multi-value Delimiter.
- Aktivieren Sie die Option Ergebnisvorschau.
- Im Abschnitt Spalten geben wir den/die Schlüssel im JSON-Array an, für den/die der/die Wert(e) in eine Spalte der resultierenden CSV-Datei extrahiert werden sollen.
- Geben Sie im Parameter Column name topping und in den Parameter JSONPath .type ein.
- Wählen Sie im Parameter Delimiter Komma.
- Speichern Sie den Befehl.
Schritt 8: Abrufen der Liste der Schläger
Verwenden Sie den Befehl Array to CSV des JSON Connectors, um die Liste der Schläger im verschachtelten JSON-Array zu erhalten. Dieser Vorgang wird für jede der Donut-Sorten wiederholt. Da dieser Schritt dem vorherigen Schritt sehr ähnlich ist, kopieren Sie den im vorherigen Schritt konfigurierten Befehl und aktualisieren Sie ihn einfach für die Schlägerinformationen.
- Kopieren Sie das Array in CSV - Toppings Befehl.
- Verbinden Sie die Gruppe Start aus der Befehlsgruppe Donut-Sorten mit dem Befehl Array to CSV - Toppings (Copy).
- Benennen Sie den kopierten Befehl: Array zu CSV - Batters.
- Löschen Sie im Parameter Pfad zum Stammverzeichnis die Überschrift, indem Sie auf das X klicken. Geben Sie batters (Groß- und Kleinschreibung beachten) ein, und drücken Sie die Eingabetaste. Geben Sie dann batter ein und drücken Sie die Eingabetaste. Es sollten drei Blasen im Parameter Path to root enthalten sein.
- JSON-Datei Iteration *
- Teigs
- Teig
- Ändern Sie im Abschnitt Spalten den Spaltennamen von auf auf batter.
- Speichern Sie den Befehl
Schritt 9: Die Daten reduzieren
Ähnlich wie in der letzten Übung verwenden Sie eine kartesische Verknüpfung in einem erweiterten Abfragebefehl des Tabular Transformation Connector, um das Dataset zu reduzieren.
- Fügen Sie einen Advanced Query Befehl aus dem Tabular Transformation Connector in die Kette ein.
- Verbinden Sie das Array mit CSV - Batters und Array mit CSV - Toppings Befehle mit dem Advanced Query Befehl.
- Benennen Sie den Befehl: Advanced Query - Flatten JSON Object.
- Klicken Sie im Abschnitt Tabellen einmal auf die Schaltfläche Hinzufügen, so dass zwei Tabellen verfügbar sind. Füllen Sie den Abschnitt "Tabellen" wie unten angegeben aus:
| Datei | Tabellenname |
| Konvertierte Datei Ausgabe aus dem Array in CSV - Batters Befehl | Schläger |
| Konvertierte Datei Ausgabe aus dem Array in CSV - Toppings Befehl | Topping |
-
Geben Sie in den Parameter Query die folgende Abfrage ein:
Wählen Sie '<JSON>' als Sorte,Teig,Belag aus Teig,Belag
-
- <JSON> sollte ausgewählt und ersetzt werden, indem Group Iterator im Variablenfenster erweitert und JSON File Iteration ausgewählt wird.
- Nachdem die JSON File Iteration Variable ausgewählt wurde, klicken Sie auf die grüne Sprechblase, um das Formular für die Variablentransformation zu öffnen.
- Wenden Sie die Get Value from JSON Variable Transformation mit variety für das Feld Value an.
- Achten Sie darauf, nach der Eingabe der Sorte die Eingabetaste zu drücken und die Umwandlung zu akzeptieren!
- Geben Sie Comma für die Parameter Input Delimiter und Output Delimiter an.
- Aktivieren Sie die Option Ergebnisvorschau.
- Speichern Sie den Befehl.
Schritt 9: Testen Sie die Übung
- Veröffentlichen Sie die Kette.
- Klicken Sie auf Ausführen und wählen Sie dann Kette ausführen.
- Sobald die Kette abgeschlossen ist,
- Klicken Sie auf den Knoten Erweiterte Abfrage - JSON-Objekt reduzieren und wählen Sie die Registerkarte Ausgaben. Bestätigen Sie die Anzahl der Datensätze für jede Iteration:
- Iteration 1: 28 Datensätze
- Iteration 2: 5 Datensätze
- Iteration 3: 8 Datensätze
- Klicken Sie auf die Ergebnisvorschau (Augensymbol) Bestätigen Sie die Datenübereinstimmungen für jede Iteration.
- Klicken Sie auf den Knoten Erweiterte Abfrage - JSON-Objekt reduzieren und wählen Sie die Registerkarte Ausgaben. Bestätigen Sie die Anzahl der Datensätze für jede Iteration:
Um mehr über die Datentransformation mit Hilfe von Chains zu erfahren, schauen Sie sich die Connected Learning Paths - Transformation Introduction an!