Validierung und Fehlerbehebung bei Datentransformationen
Softwareentwickler und andere Fachleute im Bereich Datenverarbeitung benötigen oft die Möglichkeit, Daten von einem Format in ein anderes umzuwandeln. Diese Umwandlungen können einfache, direkte Konvertierungen sein oder komplexere Manipulationen erfordern. Beispielsweise müssen Beziehungen erzeugt werden, wenn flache CSV-Dateien in eine Datenbank importiert werden, oder die Quelldaten müssen für das Zielformat aufgeteilt werden, wie beispielsweise bei der Unterscheidung zwischen vollständigem Namen, Vorname, Mittelname, Nachname und optionalem Zusatz. Die Validierung der Datenumwandlung ist entscheidend, um Datenverlust oder -beschädigung zu verhindern.
In einem früheren Beitrag zum Thema Datenintegration von Webdiensten haben wir einen String-Wert für die GMT-Zeit mit einer numerischen Verschiebung in Sekunden kombiniert, um die lokale Zeit für Wettervorhersagen zu generieren. Wir haben eine benutzerdefinierte Funktion erstellt, die alle erforderlichen Schritte für diese Operation ausführt. MapForce enthält einen leistungsstarken, interaktiven Debugger für die Datenzuordnung, mit dem diese Transformation einfach nachvollzogen und validiert werden kann. Sehen wir uns an, wie das funktioniert.

Hier ist die Darstellung der Benutzerfunktion "calc-local-time" in unserem Datenverarbeitungsprojekt. Wie Sie sehen können, unterstützt MapForce die datenbezogene Zuordnung ohne Programmierung über eine visuelle, per Drag-and-Drop bedienbare Oberfläche.

Die Funktion akzeptiert dt_txt, einen String-Wert für ein Datum und eine Uhrzeit im Format "2020-02-22 18:00:00", sowie den numerischen Wert der Zeitzone, der den Unterschied zur GMT-Zeit für den angegebenen Ort der Vorhersage in Sekunden angibt.
Sobald die Daten transformiert sind, wird das Ergebnis der Funktion in Spalte A einer Excel-Tabelle gespeichert. Innerhalb der Tabelle ist das Format von Spalte A als "Datum" definiert, wobei das angegebene Format auch die Uhrzeit enthält, wie beispielsweise "20.05.20 16:00 Uhr".
Durch Doppelklicken auf den Header der Benutzerfunktion wird diese erweitert, um die einzelnen Operationen anzuzeigen:

Die beiden Eingabewerte befinden sich rechts, und der endgültige Ausgabewert, gekennzeichnet mit "A", ist ganz links. Vereinfacht gesagt, addiert die Funktion die Zeitzonenverschiebung zu dem Datum und der Uhrzeit (dt_txt), um die lokale Zeit zu berechnen. MapForce enthält eine integrierte Funktion zur Datums- und Zeitaddition, die diese Operation ausführt. Diese Funktion ist im obigen Bild links neben dem Ausgabewert A dargestellt. Aber nichts ist so einfach, wie es scheint! Die vom Webdienst empfangenen Eingabewerte liegen in unterschiedlichen Formaten vor und müssen an das Format und die Syntax der Datums- und Zeitadditionsfunktion angepasst werden.
Validierung von Datentransformationen mit dem MapForce-Debugger
Wir können den Debugger für die Datentransformation in MapForce verwenden, um die Schritte der benutzerdefinierten Funktion zu verfolgen und sicherzustellen, dass sie das gewünschte Ergebnis liefert. Zuerst setzen wir einen Debug-Breakpoint, indem wir mit der rechten Maustaste auf das Eingabefeld für die Zeitzone klicken:

Mehrere Hilfenfenster zur Fehlersuche werden geöffnet, und die Ausführung wird fortgesetzt, bis der Haltepunkt erreicht ist. Der verarbeitete Wert am Haltepunkt wird hervorgehoben:

Wir bieten verschiedene Optionen, um die Ausführung fortzusetzen. Die Option "Minimaler Schritt" bietet die detaillierteste Ansicht für jeden einzelnen Verarbeitungsschritt.

Dieser Befehl unterteilt einen Schritt und stoppt in der Regel zweimal für jede Verbindung: einmal, wenn die Quelle einen Wert liefert, und einmal, wenn das Ziel diesen Wert verarbeitet. Durch wiederholtes Klicken auf "Minimaler Schritt" wird die Transformation fortgesetzt, und wir können genau beobachten, was passiert, während die Funktion calc-local-time arbeitet:

Während der Ausführung werden die Werte an jedem Verbindungspunkt dem Fenster hinzugefügt.
Die integrierte Funktion "datetime-add" benötigt einen Datums- und Zeitwert als ersten Eingabeparameter und einen String-Wert, der den Zeitraum angibt, der addiert werden soll, als zweiten Parameter. Im folgenden Bild zeigen wir, wie wir Schritt für Schritt bis zur Erzeugung des Ausgabewerts vorgegangen sind. Hervorgehoben sind die Eingaben für die Funktion "datetime-add" sowie das endgültige Ergebnis:

Der ursprüngliche Offset-Wert für Sekunden beträgt 28.800 Sekunden, was acht Stunden entspricht. Das Ergebnis, das berechnet wurde, ist acht Stunden später als die Referenzzeit "dt_txt", daher ist die Ausgabe korrekt.
Berücksichtigung anderer Fälle
Die Differenz zur GMT-Zeit ist nur dann positiv, wenn sich ein Ort östlich der GMT-Zeit befindet. Orte, die sich westlich der GMT-Zeit befinden, sollten eine negative Differenz aufweisen. Anders ausgedrückt: New York liegt westlich von London, daher ist die lokale Zeit dort früher. Peking liegt östlich der GMT-Zeit, daher ist die lokale Zeit dort später.
Wir müssen die Funktion "calc-local-time" für einen Fall überprüfen, in dem die Zeitzonenverschiebung negativ ist.
Es gibt verschiedene Möglichkeiten, dies zu erreichen. Unsere Liste der Orte enthält einige Standorte östlich von Greenwich Mean Time (GMT) und einige westlich davon. Wir könnten die Ausführung schrittweise fortsetzen, bis wir einen Standort mit einer negativen Zeitzone erreichen.

Der Web-Dienst liefert für jede Stadt 40 Vorhersagen, sodass es mühsam wäre, alle Vorhersagen für die ersten vier Städte durchzugehen.
Wir könnten die Liste der Städte ändern, indem wir eine neue Stadt aus der westlichen Hemisphäre an den Anfang der Liste setzen, oder wir könnten eine neue Eingabedatei für einen Testfall erstellen. In vielen Fällen ist dies eine sinnvolle Teststrategie.
Alternativ können wir eine Bedingung für den Haltepunkt festlegen. Wenn wir den Haltepunkt so einstellen können, dass er nur dann aktiv wird, wenn ein negativer Wert auftritt, können wir mit unserer ursprünglichen Eingabedatei fortfahren. Das ist der schnellste Weg, um zu einem endgültigen Ergebnis zu gelangen.
Zurück zur Datenzuordnung: Wir klicken mit der rechten Maustaste auf den Breakpoint, um dessen Eigenschaften zu ändern

Dadurch öffnet sich ein Dialogfenster, in dem wir eine Eigenschaft festlegen können, um den Haltepunkt bedingt zu aktivieren. Das Bild unten zeigt die Bedingung, die die Ausführung stoppt, wenn der Wert der Zeitzone negativ ist:

Jetzt können wir die Zuordnung im Debug-Modus erneut ausführen. Die ersten Städte in der Eingabeliste, die sich alle östlich von Greenwich Mean Time (GMT) liegen, werden verarbeitet. Sobald ein erster negativer Zeitzonenwert auftritt, wird der Haltepunkt ausgelöst und die Ausführung pausiert.

Mit derselben Schritt-für-Schritt-Methode, die oben beschrieben wurde, können wir verfolgen, wie sich der negative Wert verändert, während die Funktion "calc-local-time" ausgeführt wird.

Der Zeitzonenwert von -25.200 Sekunden wird in einen String umgewandelt. Anschließend fügt die integrierte Verkettungsfunktion Zeichen am Anfang und Ende hinzu, um den Zeitdauer-String für die Funktion datetime-add zu erstellen.
Das Hinzufügen eines negativen Wertes entspricht der Subtraktion, aber an dieser Stelle ist die Syntax für die Angabe von Zeitspannen noch nicht ganz korrekt. Das Minuszeichen (oder Bindestrich) muss das erste Zeichen der Zeichenkette für die Zeitspanne sein. Daher sucht die Funktion "replace" in der Zeichenkette nach "PT-" und ersetzt es, falls gefunden, durch "-PT".
Der Wert von 25.200 Sekunden entspricht sieben Stunden. Wenn man sieben Stunden von dem Eingabewert 2020-05-23T00:00:00 abzieht, erhält man 2020-05-22T17:00:00, oder den 22.05.2020 um 17:00 Uhr. Wir haben die Benutzerfunktion nun für Fälle mit positiven und negativen Zeitversätzen validiert.
Ob Sie Datenumwandlungen auf ihre Richtigkeit überprüfen oder eine unerwartete Ergebnisursache ermitteln möchten, Fehlerbehebung bei der Datenkonvertierung und die Transformationsfunktionen in MapForce bieten einen tiefen Einblick in die genauen Abläufe von Datenintegrations- und ETL-Projekten, und zwar auf eine Weise, die bisher in keiner anderen, selbst noch deutlich teureren Datenmapping-Software möglich war.
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!