Integracja danych z usług sieciowych
W poprzedni wpis Napisaliśmy, że każde zadanie związane z integracją danych i generowaniem raportów musi rozpoczynać się od jasnego zrozumienia danych źródłowych. Korzystając z widoku tabeli w programie XMLSpy, który jest liderem w swojej branży, można Edytor plików XML i JSON, Przeanalizowaliśmy dane JSON zawierające prognozy pogody na 5 dni, pobrane z usługi internetowej.
Kontynuując scenariusz, o którym wspominaliśmy wcześniej, użyjemy MapForce, uznanego i nagradzanego narzędzia graficznego Narzędzie do mapowania danych, umożliwiające konwersję i integrację danych w dowolnym formacie, Przetwarzamy prognozy dla szeregu ważnych portów przeładunkowych i umieszczamy je w czytelnych dokumentach Excel. Chcemy zwrócić szczególną uwagę na wszelkie przewidywane silne wiatry lub obfite opady deszczu, które mogą powodować opóźnienia, utrudniając pracę dźwigów podczas załadunku i rozładunku kontenerów, lub spowalniając wejście i wyjście statków do portów.

Żądanie REST do pobierania prognoz pogody przyjmuje współrzędne geograficzne (szerokość i długość) i zwraca prognozę na 5 dni dla dowolnego miejsca na świecie. Pojedyncza konfiguracja MapForce może mapować wiele danych wejściowych i wyjściowych, dlatego nasz projekt integracji danych dla usługi internetowej rozpoczniemy od stworzenia listy portów handlowych wraz z ich współrzędnymi.
Tworzenie listy jako nowego dokumentu JSON w widoku tabelarycznym w programie XMLSpy jest szybkie i proste. Wystarczy wpisać dane, nie martwiąc się o znaki specjalne związane z formatem JSON. Na poniższym obrazku kliknęliśmy ikonę w lewym górnym rogu, aby wyświetlić listę w formie tabeli:

Widok siatki znacznie ułatwia przeglądanie i analizowanie zawartości pliku, w przeciwieństwie do widoku tekstowego, który wyświetla wszystkie znaki składni niezbędne w prawidłowym pliku JSON.

Omówienie mapowania danych
Projekt integracji danych MapForce Web Service będzie przyjmował listę portów jako plik wejściowy, generował żądania REST dla każdego zestawu współrzędnych i przekształcał wynikowe dane JSON dla każdego portu do arkusza kalkulacyjnego Excel.
MapForce wykorzystuje pliki schematów JSON, zgodne ze specyfikacjami json-schema.org, do modelowania struktur danych JSON w procesie mapowania. MapForce może automatycznie generować schemat JSON na podstawie konkretnego przykładu danych JSON. To rozwiązanie będzie odpowiednie dla pojedynczego pliku port-list.json.
Potrzebujemy również schematu JSON, który pozwoli na prawidłowe interpretowanie danych zwracanych przez usługę internetową, co jest nieco bardziej skomplikowane. Nie mamy pojedynczego pliku .json zawierającego wszystkie możliwe warianty wymaganych i opcjonalnych danych w odpowiedzi.
Na szczęście, XMLSpy może generować schemat JSON na podstawie wielu dokumentów instancji zgromadzonych w folderze projektu XMLSpy.

Otwierając wynikową strukturę w widoku JSON Schema, widzimy, że obiekt "rain" (deszcz) jest opcjonalny. Dzieje się tak dlatego, że co najmniej jeden z plików zawierających prognozę nie przewidywał deszczu w ciągu całego 5-dniowego okresu, dlatego obiekty "rain" nie zostały uwzględnione w odpowiedzi.

Możemy wykorzystać ten schemat do opisu danych odpowiedzi REST w konfiguracji mapowania.
Na poniższym obrazku widać początek procesu mapowania danych. Zaczęliśmy od zaimportowania pliku "post-list.json" oraz nowej usługi webowej. Dodaliśmy adres URL interfejsu REST i zmapowaliśmy współrzędne szerokości i długości jako parametry wejściowe, aby zbudować żądanie. Obecnie treść odpowiedzi nie ma jeszcze żadnej struktury.

Możemy kliknąć w obszar główny, aby otworzyć okno dialogowe "Struktura odpowiedzi" i przypisać do niego schemat, który wygenerowaliśmy w programie XMLSpy

Po przypisaniu schematu, wszystkie elementy zawarte w treści stają się dostępne do mapowania

Teraz możemy dodać docelowy plik Excel. Otrzymaliśmy przykładową arkusz kalkulacyjny, który możemy wykorzystać jako wzór, zawierający niektóre style komórek, wykresy oraz przykładowe dane:

Możemy dodać ten arkusz kalkulacyjny do mapowania integracji danych usługi internetowej jako cel, ale nadal musimy zidentyfikować komórki, do których mają być przesyłane dane

Kliknięcie przycisku po prawej stronie pola "Wiersze 1, n=dyn" otwiera okno dialogowe "Wybierz zakres". Wiersz 10 zawiera nagłówki kolumn dla danych, więc chcemy mapować główną tabelę, zaczynając od wiersza 11, do kolumn od A do K. Kolumny zawierają różne typy danych, które w większości odpowiadają typom tekstowym lub numerycznym w źródle JSON oraz formatom w Excelu. Okno dialogowe "Wybierz zakres" pozwala nam zdefiniować dokładne zakresy i typy danych:

Identyfikacja nazw kolumn w oknie dialogowym "Wybierz zakres" dodaje je jako etykiety w mapowaniu wyników. Następnie możemy zdefiniować logikę, która przypisuje każdą prognozę do oddzielnego pliku Excel, jak pokazano poniżej:

Nazwa pliku na samym początku arkusza Excela jest ustawiona na "
Musimy również upewnić się, że główna tabela danych w każdym pliku rozpoczyna się w wierszu 11. W tym celu powiązaliśmy element najwyższego poziomu tablicy z docelowym miejscem w wierszach 10, ustawiając parametr n na wartość "dyn" i wykorzystaliśmy funkcję automatycznego numerowania, aby resetować początkowy wiersz za każdym razem, gdy zmienia się nazwa pliku.
Każdy obiekt listy w odpowiedzi zostanie przyporządkowany do nowego wiersza w arkuszu kalkulacyjnym Excel. Teraz możemy powiązać poszczególne elementy z odpowiedzią z kolumnami w danym wierszu. Na poniższym obrazku pokazano, jak połączono wszystkie elementy, które nie wymagają dalszej obróbki.

Dla elementów powiązanych bezpośrednio, typy danych w odpowiedzi JSON odpowiadają bezpośrednio typom, które zdefiniowaliśmy dla kolumn w arkuszu kalkulacyjnym. W danych JSON źródłowych, wartość "Temp" jest typu numerycznego, a kolumna E w danych docelowych również jest typu numerycznego. Typ danych dla pola "description" w danych źródłowych to ciąg znaków, a kolumna B w danych docelowych również jest typu ciągu znaków, i tak dalej.
W schemacie JSON dla odpowiedzi zauważyliśmy, że obiekt "rain" (deszcz) jest opcjonalny. Jeśli ten obiekt nie istnieje, chcemy zastąpić go wartością zero. Można to łatwo osiągnąć, tworząc wyrażenie, które łączy funkcje sprawdzające istnienie i instrukcję warunkową: "jeśli istnieje, to... w przeciwnym razie..."

Jednym z ograniczeń formatu danych JSON jest to, że zawiera on tylko dwa typy danych: tekst i liczby. Typy danych, takie jak liczby całkowite i daty, a także specjalne formaty Excela, takie jak procenty i formaty księgowe, nie są zdefiniowane w JSON. MapForce oferuje wygodne, wbudowane funkcje, które pozwalają przekształcić dane źródłowe w pożądane typy danych docelowych podczas mapowania. Dzięki temu możemy utworzyć format daty, który chcemy, w kolumnie A tabeli Excel.
Element main.dt_text w danych JSON zawiera datę i godzinę reprezentowane jako ciąg znaków, na przykład: 2020-05-09 06:00:00. MapForce posiada funkcję parse-dateTime, która przyjmuje jako argument ciąg znaków i model formatu, a następnie zwraca wynik w formacie daty i czasu. Dodatkową komplikacją jest fakt, że ciąg dt-txt jest wyrażony w strefie czasowej GMT, a nie w czasie lokalnym dla miasta, dla którego prognoza jest przygotowywana. Różnica czasu lokalnego jest podawana w elemencie city.timezone jako dodatnia lub ujemna wartość w sekundach.
Aby zachować prostotę głównego widoku mapowania, stworzyliśmy funkcję użytkownika o nazwie "calc-local-time". Ta funkcja przyjmuje ciąg znaków i przesunięcie, a następnie oblicza czas lokalny. Funkcja użytkownika jest mapowana w taki sam sposób, jak funkcja wbudowana:

Ostatnim krokiem, który musimy wykonać, aby zakończyć mapowanie integracji danych usługi webowej, jest połączenie nazw miast i krajów oraz dodanie ich do wiersza 1, kolumny C:

Oto pełny obraz końcowego odwzorowania:

Aby uzyskać pliki Excel o odpowiednim formacie dla każdego miasta, potrzebujemy istniejącego pliku Excel o formacie zgodnym z nazwą każdego docelowego pliku. Plik wsadowy to szybki sposób na tworzenie kopii oryginalnych plików, poprzez wielokrotne kopiowanie przykładowego pliku Excel wraz z jego formatowaniem i formułami.
Wyniki integracji danych z usług sieciowych
Kliknięcie przycisku "Wyjście" znajdującego się w lewym dolnym rogu okna mapowania uruchamia proces mapowania i generuje pliki wynikowe. Jeśli na komputerze jest zainstalowany program Excel, podgląd pliku wynikowego w formacie Excel jest wyświetlany w oknie "Wyjście":

Data, godzina oraz aktualne warunki pogodowe wyświetlane na górze, a także krótkie opisy tekstowe znajdujące się obok wykresu opadów, są generowane za pomocą formuł w arkuszu kalkulacyjnym Excel. Wszystkie dziewięć plików wynikowych zostało wygenerowanych i możemy wybrać oraz wyświetlić podgląd każdego z nich. Poniżej znajduje się lista rozwijana do wyboru plików oraz siódmy plik zawierający prognozę pogody dla Seattle:

Funkcje programu Excel są dostępne w oknie podglądu. Na przykład, ta arkusz kalkulacyjny wykorzystuje podział ekranu z możliwością przewijania, przy czym górna część jest zablokowana. Możemy przewinąć do końca głównej tabeli danych, aby dokładnie zobaczyć, jaka ilość opadów jest przewidywana w ostatniej prognozie. Zwróć uwagę na numery wierszy po lewej stronie:

Jeśli wynik jest zadowalający, możemy zapisać jeden lub wszystkie wygenerowane pliki:

Dane pośrednie
MapForce został zaprojektowany z myślą o efektywności konwersji danych. Nigdy nie musieliśmy zapisywać, zarządzać ani w żaden sposób manipulować pośrednimi danymi JSON pochodzącymi z odpowiedzi serwisu REST. Wykonywanie tego mapowania integracji danych z usługą internetową nie powoduje zapisywania pośrednich danych.
Jeśli chcemy zapisać dane odpowiedzi JSON wraz z gotowymi arkuszami Excel, MapForce oferuje kilka opcji. Jedną z nich jest utworzenie łańcucha transformacji, który zapisuje dane odpowiedzi jako pośredni plik JSON, oparty na tej samej strukturze, co odpowiedź. Następnie można przekształcić ten plik JSON, aby wygenerować wynik w formacie Excel. Łańcuch transformacji umożliwia podgląd i zapisywanie plików pośrednich, a także ostatecznego wyniku. Poniżej znajduje się lista plików wyjściowych wygenerowanych przez łańcuch transformacji, z jednym z plików JSON wyświetlonym w trybie tekstowym w tle:

Automatyczna integracja danych z usług internetowych
Nasz scenariusz przepływu pracy wymagałby aktualizacji prognoz każdego dnia. Możemy zapisać mapowanie jako plik wykonywalny dla serwera MapForce, co umożliwi automatyczne przetwarzanie przez serwer MapForce, lub wdrożyć go bezpośrednio do serwera FlowForce, aby generować nowe prognozy zgodnie z ustalonym harmonogramem. Zadanie wykonywane przez serwer FlowForce może łączyć zadania integracji danych z wieloma akcjami, w tym akcjami systemowymi, takimi jak przenoszenie plików lub wysyłanie e-maili, lub zadanie serwera FlowForce może wykonywać złożone przepływy pracy, które mogą przekazywać wyniki i parametry w celu uruchomienia innych zadań.
Obejrzyj krótki film demonstracja wideo programu MapForce, lub Pobierz bezpłatną wersję próbną w tym samouczki, pomoc i wiele przykładów, które pomogą rozpocząć pracę nad własnym projektem związanym z integracją danych JSON i usług internetowych, a także w przypadku innych potrzeb związanych z mapowaniem, konwersją i transformacją danych!