Integration von Daten aus Webdiensten
In einem vorherigen Beitrag haben wir geschrieben, dass jede Aufgabe zur Datenintegration und -berichterstellung mit einem klaren Verständnis der Quelldaten beginnen muss. Mit der Rasteransicht in XMLSpy, dem führenden XML- und JSON-Editor, haben wir JSON-Daten für Wettervorhersagen für die nächsten fünf Tage analysiert, die von einem Webdienst abgerufen wurden.
Im Anschluss an unser vorheriges Szenario werden wir MapForce, das preisgekrönte, grafische Tool zur Datenzuordnung für jede Art von Konvertierung und Integration, verwenden, um die Prognosen für eine Reihe wichtiger Häfen für den Gütertransport in übersichtlich gestaltete Excel-Dokumente zu übertragen. Wir möchten dabei besonders auf vorhergesagte starke Winde oder starke Regenfälle hinweisen, die zu Verzögerungen führen könnten, indem sie den Betrieb von Kränen beim Be- und Entladen von Containern beeinträchtigen oder die An- und Abreise von Schiffen in den Häfen verlangsamen.

Die REST-Anfrage für Wettervorhersagen akzeptiert Längen- und Breitengradkoordinaten, um eine 5-Tage-Vorhersage für jeden beliebigen Ort weltweit zurückzugeben. Eine einzelne MapForce-Zuordnung kann mehrere Eingaben und Ausgaben verarbeiten. Daher beginnen wir das Projekt zur Integration von Web-Service-Daten, indem wir eine Liste von Hafenstandorten und deren Koordinaten erstellen.
Es ist einfach, diese Liste als neues JSON-Dokument in der Gitteransicht von XMLSpy zu erstellen, indem man die Daten eingibt, ohne sich Gedanken über die JSON-Syntaxelemente machen zu müssen. Im folgenden Bild haben wir auf das Symbol links oben geklickt, um die Liste in einer tabellarischen Form anzuzeigen:

Die Rasteransicht erleichtert es erheblich, den Inhalt einer Datei zu prüfen und zu überprüfen, im Gegensatz zur Textansicht, die alle Syntaxelemente anzeigt, die in einer gültigen JSON-Datei erforderlich sind.

Überblick über die Datenzuordnung
Das MapForce-Webservice-Projekt zur Datenintegration verwendet eine Liste von Häfen als Eingabedatei. Für jede Gruppe von Koordinaten wird eine REST-Anfrage gesendet, und die resultierenden JSON-Daten für jeden Hafen werden in ein Excel-Arbeitsblatt übertragen.
MapForce verwendet JSON-Schema-Dateien, die den Spezifikationen von json-schema.org entsprechen, um JSON-Datenstrukturen für die Transformation zu modellieren. MapForce kann automatisch ein JSON-Schema aus einer JSON-Instanz generieren. Das funktioniert gut für die einzelne Datei "port-list.json".
Wir benötigen außerdem ein JSON-Schema, um die von dem Webdienst zurückgegebenen Daten zu verarbeiten, was etwas komplizierter ist. Wir haben keine einzelne .json-Datei, die alle möglichen Varianten der erforderlichen und optionalen Daten in der Antwort enthält.
Glücklicherweise kann XMLSpy ein JSON-Schema basierend auf mehreren Instanzdokumenten generieren, die in einem XMLSpy-Projektordner gesammelt wurden.

Beim Öffnen des resultierenden Schemas in der JSON-Schema-Ansicht sehen wir, dass das Objekt "Regen" optional ist. Das liegt daran, dass mindestens eine der Vorhersage-Instanzdateien keine Niederschläge für die gesamten 5 Tage vorhersagte, weshalb keine "Regen"-Objekte in der Antwort enthalten waren.

Wir können dieses Schema verwenden, um die Daten, die in der REST-Antwort zurückgegeben werden, in der Konfiguration zu beschreiben.
Auf dem folgenden Bild sehen Sie, wie wir mit der Datenzuordnung begonnen haben, indem wir die Datei "post-list.json" und einen neuen Webdienst hinzugefügt haben. Wir haben die REST-URL hinzugefügt und die Koordinaten für Breitengrad und Längengrad als Eingabeparameter zugeordnet, um die Anfrage zu erstellen. Bisher hat der Hauptteil der Antwort noch keine Struktur.

Wir können auf den Hauptbereich klicken, um den Dialog "Antwortstruktur" zu öffnen und das Schema zuzuweisen, das wir in XMLSpy erstellt haben

Sobald das Schema zugewiesen wurde, stehen alle Elemente im Hauptteil für die Zuordnung zur Verfügung:

Jetzt können wir die Ziel-Excel-Datei hinzufügen. Wir haben eine Beispieltabellenkalkulation als Vorlage erhalten, die einige Zellformatierungen und Diagramme sowie fiktive Daten enthält:

Wir können diese Tabellenkalkulation als Ziel in die Datenintegration des Web-Dienstes einbinden, aber wir müssen noch festlegen, welche Zellen die Daten empfangen sollen

Durch Klicken auf den Button rechts neben dem Eintrag "Zeile 1, n=dyn" öffnet sich das Dialogfenster "Bereich auswählen". Zeile 10 enthält die Spaltenüberschriften für die Daten, daher möchten wir die Haupttabelle ab Zeile 11 in die Spalten A bis K abbilden. Die Spalten enthalten unterschiedliche Datentypen, die größtenteils Text- oder numerische Typen in der JSON-Quelle und Formattypen in Excel entsprechen. Im Dialogfenster "Bereich auswählen" können wir die genauen Zielbereiche und Datentypen festlegen:

Das Identifizieren der Spaltennamen im Dialogfenster "Auswahlbereich" fügt diese als Beschriftungen in der Ausgabemapping-Ansicht hinzu. Anschließend können wir die Logik erstellen, um jede Prognose in eine separate Excel-Datei zu schreiben, wie im folgenden Beispiel gezeigt:

Der Dateiname ganz oben in der Excel-Zieldatei ist auf
Wir müssen außerdem sicherstellen, dass die Hauptdatentabelle in jeder Datei bei Zeile 11 beginnt. Dazu haben wir das oberste Element des Listenarrays mit dem Zielbereich in den Zeilen 10, n=dyn, verknüpft und eine automatische Nummerierungsfunktion verwendet, um die Startzeile jedes Mal zurückzusetzen, wenn sich der Dateiname ändert.
Jedes List-Objekt in der Antwort wird einer neuen Zeile in der Excel-Tabelle zugeordnet. Nun können wir die einzelnen Elemente in der Antwort mit den Spalten in dieser Zeile verknüpfen. Im folgenden Bild haben wir alle Elemente miteinander verbunden, die keine weitere Umwandlung benötigen.

Für die direkt verknüpften Elemente entsprechen die Datentypen in der JSON-Antwort direkt den Typen, die wir für die Spalten in der Tabelle festgelegt haben. "Temp" in den ursprünglichen JSON-Daten ist ein numerischer Wert, und die Spalte E im Ziel ist ebenfalls numerisch. Der Datentyp für "Beschreibung" in den ursprünglichen Daten ist ein String, und die Spalte B im Ziel ist ebenfalls ein String, und so weiter.
Im JSON-Schema für die Antwort haben wir gesehen, dass das Objekt "rain" optional ist. Wenn es nicht vorhanden ist, möchten wir es durch den Wert Null ersetzen. Das lässt sich einfach erreichen, indem wir einen Ausdruck erstellen, der die Funktionen "exists" (vorhanden) und "if-else" (wenn-dann-sonst) kombiniert:

Eine Einschränkung des JSON-Datenformats besteht darin, dass es nur zwei Datentypen unterstützt: Zeichenketten und numerische Werte. Datentypen wie Ganzzahlen und Datums- und Zeitwerte, oder spezielle Excel-Formate wie Prozentwerte und Finanzdaten, sind in JSON nicht definiert. MapForce bietet praktische, integrierte Funktionen, um Quelldaten in die gewünschten Ziel-Datentypen innerhalb der Zuordnung umzuwandeln. So können wir das gewünschte Datums- und Zeitformat in Spalte A der Excel-Tabelle erstellen.
Das Element "main.dt_text" in den JSON-Daten repräsentiert Datum und Uhrzeit als Zeichenkette, beispielsweise: 2020-05-09 06:00:00. MapForce verfügt über eine Funktion namens "parse-dateTime", die eine Zeichenkette und ein Formatmodell als Eingabe entgegennimmt und ein Datums- und Zeitwert zurückgibt. Eine weitere Komplikation besteht darin, dass die Zeichenkette "dt_txt" in der Zeitzone GMT und nicht in der lokalen Zeit der jeweiligen Stadt für die Wettervorhersage angegeben ist. Die lokale Zeitzonenverschiebung wird im Element "city.timezone" in Sekunden als positiver oder negativer Wert angegeben.
Um die Hauptansicht der Karten übersichtlich zu halten, haben wir eine Benutzerfunktion namens "calc-local-time" erstellt. Diese Funktion nimmt einen String und einen Offset entgegen und berechnet die lokale Zeit. Die Benutzerfunktion wird genauso behandelt wie eine eingebaute Funktion:

Der letzte Schritt, um die Datenintegration des Web-Dienstes abzuschließen, besteht darin, die Namen der Städte und Länder zu kombinieren und sie in Zeile 1, Spalte C einzufügen

Hier ist eine vollständige Darstellung der endgültigen Zuordnung:

Um die korrekt formatierten Excel-Dokumente für jede Stadt zu erhalten, benötigen wir eine bestehende, bereits formatierte Excel-Datei, die dem jeweiligen Zieldateinamen entspricht. Eine Batch-Datei ist eine schnelle Möglichkeit, die Originaldateien zu erstellen, indem die ursprüngliche Excel-Beispieldatei zusammen mit ihren Formatierungen und Formeln wiederholt kopiert wird.
Ergebnisse der Datenintegration über Webdienste
Durch Klicken auf die Schaltfläche "Ausgabe" unten links im Mapping-Fenster wird das Mapping ausgeführt und die Ausgabedateien generiert. Wenn Excel auf dem Arbeitsplatzrechner installiert ist, wird die tatsächliche Excel-Ausgabe im Ausgabefenster angezeigt

Das aktuelle Datum und die Uhrzeit sowie das Wetter werden oben angezeigt, und die Textzusammenfassungen neben dem Diagramm für Niederschlag werden durch Formeln in der Excel-Tabelle erstellt. Alle neun Ausgabedateien wurden generiert, und wir können jede einzelne Datei auswählen und anzeigen. Unten ist die Auswahlliste für die Dateien sowie die siebte Datei mit der Wettervorhersage für Seattle dargestellt:

Die Funktionen von Excel sind im Vorschaufenster verfügbar. Beispielsweise verwendet diese Tabelle eine geteilte Ansicht mit Scrollbalken, wobei der obere Bereich fixiert ist. Wir können bis zum Ende der Hauptdatentabelle scrollen, um genau zu sehen, wie viel Niederschlag in der letzten Vorhersage erwartet wird. Beachten Sie die Zeilennummern auf der linken Seite:

Wenn das Ergebnis zufriedenstellend ist, können wir eine oder alle der erstellten Dateien speichern:

Zwischendaten
MapForce wurde für eine effiziente Datenkonvertierung entwickelt. Wir mussten die Zwischen-JSON-Daten, die aus der REST-Antwort stammen, nie speichern, verwalten oder explizit bearbeiten. Die Ausführung dieser Datenintegration für Webdienste speichert keine Zwischendaten.
Wenn wir die JSON-Antwortdaten zusammen mit den endgültigen Excel-Tabellen speichern möchten, bietet MapForce verschiedene Möglichkeiten. Eine Option besteht darin, eine verkettete Zuordnung zu erstellen, die die Antwortdaten als eine temporäre JSON-Datei speichert, basierend auf demselben Schema wie die Antwort. Anschließend können wir diese JSON-Datei verwenden, um die Excel-Ausgabe zu erstellen. Eine verkettete Zuordnung ermöglicht es Ihnen, Zwischendateien sowie das Endergebnis anzuzeigen und zu speichern. Im Folgenden ist die Liste der Ausgabedateien dargestellt, die durch eine verkettete Zuordnung generiert wurde, wobei eine der JSON-Dateien im Hintergrund im Textmodus angezeigt wird:

Automatisierte Integration von Web-Service-Daten
Unser Workflow-Szenario erfordert eine tägliche Aktualisierung der Prognosen. Wir können die Zuordnung als Ausführungsdatei für den MapForce Server speichern, um eine automatisierte Verarbeitung durch den MapForce Server zu ermöglichen, oder wir können sie direkt auf dem FlowForce Server bereitstellen, um neue Prognosen nach einem automatisierten Zeitplan zu erstellen. Ein FlowForce Server-Job kann Aufgaben zur Datenintegration mit verschiedenen Aktionen kombinieren, darunter Systemaktionen wie das Verschieben von Dateien oder das Senden von E-Mails. Alternativ kann ein FlowForce Server-Job komplexe Workflows ausführen, die Ergebnisse und Parameter an andere Jobs weitergeben können, um diese auszulösen.
Sehen Sie sich eine kurze Video-Demonstration von MapForce an, oder laden Sie eine kostenlose Testversion herunter, die Tutorials, Hilfestellungen und viele weitere Beispiele enthält, um mit Ihrem eigenen Projekt zur Integration von JSON- und Web-Service-Daten oder für andere Anforderungen an die Datenzuordnung, -konvertierung und -transformation zu beginnen!