W tej połączonej ścieżce edukacyjnej utworzymy łańcuch, który ilustruje, jak przekonwertować zestaw danych JSON na CSV. W tym przykładowym zbiorze danych znajduje się tablica zagnieżdżonych obiektów.
Ta ścieżka wzmacnia koncepcję pętli, której nauczyliśmy się w ćwiczeniu JSON Data, a także koncepcję łączenia kartezjańskiego w ścieżce JSON Nested Objects. Jeśli nie ukończyłeś tych ścieżek, zdecydowanie zalecamy ukończenie ich przed ukończeniem tej.
| Podstawowy cel edukacyjny | Możliwości konektora JSON |
| Dodatkowe cele edukacyjne | Potęga zaawansowanego polecenia zapytania transformacji tabelarycznej, iteracji i transformacji zmiennych |
| Wymagania wstępne | |
| Szablon łańcucha wsparcia | CLP | Dostęp do tablicy JSON zagnieżdżonych obiektów |
Krok 1: Utwórz łańcuch
- Dodaj nowy łańcuch
- Nazwij łańcuch: CLP | Dostęp do tablicy JSON zagnieżdżonych obiektów
- Utwórz zmienną łańcuchową
- Nazwa: cv-JSON-AllDonut
- Wartość: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- Uratuj łańcuch
Krok 2: Pobieranie danych JSON
Użyj konektora HTTP, aby pobrać dane pączka z lokalizacji internetowej. Ten zestaw danych ilustruje przykład bardziej złożonego zestawu danych JSON z tablicą (wiele elementów) zagnieżdżonych obiektów (atrybutów).
- Dodaj polecenie GET z konektora HTTP do węzła Start.
- Skonfiguruj polecenie w następujący sposób:
| Nazwa | GET - Wszystkie desery |
| Nazwa użytkownika | <pozostaw puste> |
| Hasło | <pozostaw puste> |
| Certyfikat CA | <pozostaw puste> |
| Certyfikat | <pozostaw puste> |
| Klucz prywatny certyfikatu | <pozostaw puste> |
| Pokaż odpowiedź | Sprawdzone |
| Adres URL | cv-JSON-AllDonut Zmienna łańcuchowa |
| Ciąg zapytania | <pozostaw puste> |
| Typ zawartości | application/json |
| Odpowiedź | <pozostaw puste> |
- Zapisz polecenie
Krok 3: Konwersja JSON do CSV
Użyj JSON Connector, aby wyodrębnić klucze z tablicy JSON w celu zidentyfikowania różnych odmian pączków.
Dla porównania, poniżej znajduje się schemat all-donuts JSON:
Schemat
[{"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":"Cukier puder"},{"id": "5006", "type": "Czekolada z posypką"},{"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"}]}]
- Dodaj polecenie Array to CSV z JSON Connector do łańcucha.
- Połącz węzeł początkowy (GET - All Desserts) z poleceniem Array to CSV.
- Nazwij polecenie: Array to CSV - Get Variety.
- W parametrze JSON Data wybierz odpowiedź Response Output z polecenia GET - All Desserts.
- Pozostaw parametry Input Text, Path to root i Filter puste.
- Pozostaw parametr Multi-value Delimiter jako przecinek (,).
- Zaznacz opcję Preview Result.
- Wprowadź variety dla parametrów Column Name i .name dla parametrów JSONPath.
- Wybierz Pipe dla parametru Delimiter.
- Zapisz polecenie
Krok 4: Utwórz iterowalny zestaw danych
Jak wspomniano, zbiór danych zawiera tablicę (tj. wiele elementów) zagnieżdżonych obiektów. Aby przetworzyć każdą z odmian indywidualnie, do zbioru danych należy dodać numery wierszy. Te numery wierszy będą używane w kolejnych poleceniach Array to CSV do identyfikacji elementu tablicy (pączka), dla którego zagnieżdżony obiekt (atrybuty) będzie analizowany.
Osoby zaznajomione z narzędziem Chain Builder mogą zastanawiać się, dlaczego używamy Advanced Query w przeciwieństwie do polecenia Add Row Numbers. Polecenie Add Row Numbers rozpoczyna liczenie od jednego (1), a my musimy rozpocząć liczenie od zera (0), ponieważ tablice JSON są oparte na zerze.
- Dodaj polecenie Advanced Query z łącznika Tabular Transformation Connector do łańcucha.
- Połącz tablicę z CSV - polecenie Get Variety z poleceniem Advanced Query.
- Nazwij polecenie: Advanced Query - Add Row Numbers.
- Skonfiguruj sekcję Tabele
- W polu File określ Converted File Output from the Array to CSV - Get Variety Command.
- Wprowadź odmiany w parametrze Table Name. Określone zapytanie zostanie uruchomione względem tej tabeli.
- W parametrze Query wprowadź następujące dane:
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- Podaj Pipe i Comma dla parametrów Input Delimiter i Output Delimiter.
- Sprawdź parametr Preview results.
- Zapisz polecenie.
Krok 5: Utwórz tablicę JSON
Użyj polecenia CSV do JSON z konektora JSON, aby przekonwertować unikalną listę odmian na tablicę JSON. Grupa poleceń może następnie iterować po każdym elemencie w tej tablicy.
- Dodaj polecenie CSV do JSON z JSON Connector do łańcucha.
- Połącz polecenie Advanced Query - Add Row Numbers z poleceniem CSV to JSON.
- Skonfiguruj polecenie, korzystając z poniższych instrukcji:
| Nazwa | CSV do JSON - Odmiany |
| Plik wejściowy | Wynik Dane wyjściowe z zapytania zaawansowanego - Dodaj numery wierszy Polecenie |
| Ogranicznik | Przecinek (,) |
- Zapisz polecenie
Krok 6: Dodaj grupę poleceń
Dodaj grupę poleceń do łańcucha, aby umożliwić iterację po każdej z odmian pączków zidentyfikowanych w kroku Advanced Query.
- Dodaj grupę poleceń do łańcucha.
- Połącz polecenie CSV to JSON - Varieties z sekcją In grupy poleceń.
- Kliknij grupę poleceń, a następnie wybierz ikonę zakraplacza, aby zmienić kolor polecenia na żółty.
- Nazwij grupę: Donut Varieties.
- Włącz przełącznik Iterations i wybierz plik JSON Output z CSV to JSON - Varieties Command.
- Zapisz grupę poleceń.
Krok 7: Pobierz listę dodatków
Użyj polecenia Array to CSV konektora JSON, aby uzyskać listę dodatków w zagnieżdżonej tablicy JSON. Czynność tę powtórz dla każdej odmiany pączka.
zwróć szczególną uwagę na ostrzeżenia w poniższych krokach oznaczone czerwonym wykrzyknikiem.
- Dodaj polecenie Array to CSV z JSON Connector do łańcucha.
- Połącz Group Start z Donut Varieties Command Group z Array to CSV Command.
- Nazwij polecenie: Array to CSV - Toppings.
- W parametrze JSON Data wybierz odpowiedź Response Output z polecenia GET - All Desserts.
- Pozostaw parametr Input Text pusty.
- W parametrze Path to root wykorzystamy wartość iteracji, aby określić element tablicy, na którym będzie działać iteracja.
- Poniższe kroki są krytyczne i należy je przeczytać w całości przed wykonaniem tego kroku.
- Kliknij parametr Path to root. W panelu wyboru zmiennych rozwiń Group Iterator i kliknij JSON File Iteration.
- Kliknij zielony bąbelek JSON File Iteration w parametrze Path to root. Spowoduje to otwarcie formularza transformacji zmiennej. Wybierz Get Value from JSON i kliknij znak plus (+). Wpisz RowNum (wielkość liter) w polu Value i naciśnij klawisz Enter. Kliknij Akceptuj.
- Zmienna powinna mieć gwiazdkę wskazującą, że zastosowano transformację zmiennej.
- jeśli którykolwiek z tych kroków nie powiedzie się, usuń zmienną iteracji pliku JSON ze ścieżki do katalogu głównego i zacznij od nowa.
- Po pojawieniu się dymku Iteracja pliku JSON, wpisz topping (małe litery) i naciśnij klawisz Enter.
- Poniższe kroki są krytyczne i należy je przeczytać w całości przed wykonaniem tego kroku.
- Pozostaw parametr Filter pusty.
- Pozostaw domyślną wartość przecinka (,) dla parametru Multi-value Delimiter.
- Zaznacz opcję Preview Result.
- W sekcji Columns określamy klucze w tablicy JSON, dla których mają zostać wyodrębnione wartości do kolumny w wynikowym pliku CSV.
- W parametrze Column name wpisz topping, a w parametrze JSONPath wpisz .type.
- W parametrze Delimiter wybierz Comma.
- Zapisz polecenie.
Krok 8: Uzyskaj listę zawodników
Użyj polecenia Array to CSV konektora JSON, aby uzyskać listę pałkarzy w zagnieżdżonej tablicy JSON. Czynność tę powtórz dla każdej odmiany pączka. Ponieważ ten krok jest bardzo podobny do poprzedniego, skopiuj polecenie skonfigurowane w poprzednim kroku i po prostu zaktualizuj je o informacje o pałkarzach.
- Skopiuj tablicę do CSV - Polecenie Toppings.
- Połącz Group Start z Donut Varieties Command Group z Array to CSV - Toppings (Copy) Command.
- Nazwij skopiowane polecenie: Array to CSV - Batters.
- W parametrze Path to root usuń górny dymek, klikając X. Wpisz batters (wielkość liter) i naciśnij Enter. Następnie wpisz batter i naciśnij enter. W parametrze Path to root powinny znajdować się trzy bąbelki.
- Iteracja pliku JSON *
- ciastos
- pałka
- W sekcji Kolumny zmień nazwę kolumny z topping na batter.
- Zapisz polecenie
Krok 9: Spłaszcz dane
Podobnie jak w poprzednim ćwiczeniu, użyj złączenia kartezjańskiego w zaawansowanym poleceniu zapytania z konektora transformacji tabelarycznej, aby spłaszczyć zestaw danych.
- Dodaj polecenie Advanced Query z konektora Tabular Transformation do łańcucha.
- Połącz tablicę z poleceniem CSV - Batters i tablicę z poleceniem CSV - Toppings z poleceniem Advanced Query.
- Nazwij polecenie: Advanced Query - Flatten JSON Object.
- W sekcji Tables kliknij raz przycisk Add, aby wyświetlić dwie dostępne tabele. Wypełnij sekcję Tabele zgodnie z poniższym opisem:
| Plik | Nazwa tabeli |
| Przekonwertowany plik Dane wyjściowe z tablicy do CSV - Polecenie Batters | Bateria |
| Przekonwertowany plik Dane wyjściowe z tablicy do CSV - Polecenie Toppings | Polewa |
-
W parametrze Query wprowadź poniższe zapytanie:
Wybierz '<JSON FILE ITERATION>' as Variety,Batter,Topping from Batter,Topping
-
- <JSON FILE ITERATION> należy wybrać i zastąpić, rozwijając Group Iterator z panelu Variable i wybierając JSON File Iteration.
- Po wybraniu zmiennej iteracji pliku JSON kliknij zielony dymek, co spowoduje otwarcie formularza transformacji zmiennej.
- Zastosuj transformację Get Value from JSON Variable, używając odmiany dla pola Value.
- Pamiętaj, aby nacisnąć enter po wpisaniu odmiany i zaakceptować transformację!
- Podaj Przecinek dla parametrów Ogranicznik wejściowy i Ogranicznik wyjściowy.
- Zaznacz opcję Podgląd wyników.
- Zapisz polecenie.
Krok 9: Przetestuj ćwiczenie
- Opublikuj the Chain.
- Kliknij Execute, a następnie wybierz Run Chain.
- Po zakończeniu łańcucha,
- Kliknij węzeł Advanced Query - Flatten JSON Object i wybierz zakładkę Outputs. Potwierdź liczbę rekordów dla każdej iteracji:
- Iteracja 1: 28 rekordów
- Iteracja 2: 5 rekordów
- Iteracja 3: 8 rekordów
- Kliknij przycisk Preview Results (ikona oka), aby potwierdzić dopasowanie danych dla każdej iteracji.
- Kliknij węzeł Advanced Query - Flatten JSON Object i wybierz zakładkę Outputs. Potwierdź liczbę rekordów dla każdej iteracji:
Aby dowiedzieć się więcej na temat transformacji danych przy użyciu łańcuchów, zapoznaj się ze ścieżką szkoleniową Connected Learning Paths - Transformation Introduction!