Geschichten und Tipps aus der Praxis: Agile Datentransformation mit MDOX

COL03x - feature image oneil already 300x300Was ist Agilität? Ich würde es als die Fähigkeit definieren, sich schnell, fließend und effizient in jede Richtung zu bewegen. Bei der Datenumwandlung durchlaufen die Informationen einen Prozess, der aus einer Abfolge von Vorgängen besteht. Idealerweise sollten die Prozesse umkehrbar sein, um sicherzustellen, dass keine Informationen verloren gehen.

Durch die generische Modellierung von Transformationsoperationen in Tabellen ermöglicht MDOX die Erstellung agiler Datentransformationen, die leicht ausgeführt, umgekehrt, überarbeitet und wiederholt oder entfernt werden können.

In unserem vorherigen Artikel, Einführung in MDOX, haben wir uns auf Meta-Datenobjekte (MDO) als universelles Datenmodell konzentriert, das Informationen als Objekte speichert: hierarchisch strukturierte Sammlungen von Datenelementen und Attributen, die mit einer Hierarchie von Metadatenbegriffen mit optionalen Eigenschaften verbunden sind. In diesem Artikel werden wir uns auf die Prozesse konzentrieren, die agile Datentransformationen implementieren und damit das “X” in MDOX setzen.

Tabelle 5 aus dem vorangegangenen Artikel “Einführung in MDOX” zeigt die wichtigsten Felder der Tabelle:

Picture1

Die Tabelle enthält auch mehrere Felder, die steuern, wie der optionale reguläre Ausdruck auf die Elemente des übergeordneten Begriffs angewendet wird, um ein rekursives Parsen der untergeordneten Elemente aus dem übergeordneten Text zu ermöglichen:

Picture2

Matches für den regulären Ausdruck im Feld werden vorübergehend in der Tabelle gespeichert:

Picture3Jeder Datensatz in der Tabelle definiert eine einzelne Transformationsoperation:

  1. Wenn das Feld einen gültigen regulären Ausdruck enthält, wird dieser Ausdruck auf den Langtext angewendet.
  2. Wenn das Feld eine gültige SQL-Anweisung enthält, wird die Anweisung von der Anwendung ausgeführt. Select- und Transform-Abfragen werden entweder auf dem Bildschirm angezeigt oder, wenn der Prozess automatisiert ist, als Tabellenkalkulationen in das aktuelle Anwendungsverzeichnis exportiert. Insert-Anweisungen fügen neue Datensätze zu einer Tabelle oder aktualisierbaren Ansicht hinzu. Aktualisierungs- oder Löschanweisungen wirken sich auf ausgewählte Datensätze aus.

Beachten Sie, dass das Vorhandensein eines ungültigen regulären Ausdrucks oder einer ungültigen SQL-Anweisung dazu führt, dass ein Prozess fehlschlägt. Der Entwickler muss jede Operation wiederholt testen, bis der gesamte Prozess fehlerfrei ausgeführt wird.

Operationen für einen bestimmten Term werden in der Reihenfolge von ausgeführt. Wenn ein Term Unterterme hat und die Option “Baum absteigen” ausgewählt ist, werden die Unterterme in der Reihenfolge verarbeitet. Die Gesamtreihenfolge der Operationen innerhalb einer Transformation wird also sowohl durch . als auch durch . bestimmt. Sie können eine zuvor entwickelte Operation an eine neue Stelle verschieben, indem Sie diese Felder einfach aktualisieren. Mit der MDOX-Anwendung können Sie problemlos neue Begriffe und Operationen erstellen oder den Namen, die Beschreibung und die Reihenfolge der vorhandenen Begriffe und Operationen aktualisieren. Wenn ein Daten- oder Metadatenobjekt gelöscht wird, werden durch kaskadierendes Löschen alle davon abgeleiteten Objekte entfernt, z. B. Unterbegriffe, Eigenschaften, Prozesse, Elemente, Attribute und Regex-Treffer. Dieses Verhalten ist vorteilhaft. Im Folgenden ist ein Begriff mit dem Namen “test” dargestellt, der einen untergeordneten Begriff “regex” mit einem Prozess hat, der Regex-Treffer meldet, die in “test”-Elementen gefunden wurden. Später kann der Begriff “test” gelöscht werden, und alle untergeordneten Objekte verschwinden aus der Datenbank.

Beispiel 1: Transformationsvorgang zur Erstellung eines Kreuztabellenberichts aus Regex-Treffern

Picture4 Der Regex “(\d+)\.\s(\w+)” enthält zwei in Klammern eingeschlossene Unterausdrücke. Der erste Unterausdruck (\d+) stimmt mit einer oder mehreren Ziffern überein. Der zweite (w+) stimmt mit einem oder mehreren Buchstaben überein. Zwischen diesen Teilausdrücken steht der Ausdruck ” \.\s” für einen Punkt gefolgt von einem Leerzeichen. In diesem Beispiel sucht MDOX nach dem Regex “(\d+)\.\s(\w+)” in den Elementen des übergeordneten Begriffs “test”:

Picture5

Die Regex-Treffer werden in der Tabelle gespeichert, wobei

  • = 0 => der vollständige Regex-Treffer, z.z. B. “10. foo”
  • = 1 => der 1. Teilausdruck, z. B. “10”
  • = 2 => die 2. Unterausdruck-Übereinstimmung, z. B. “bar”

Picture6

Nachdem die Regex-Übereinstimmungen gesammelt wurden, wird dieser SQL-Text in einem weiteren Vorgang kompiliert und ausgeführt:

TRANSFORM First(.value) AS FirstOfvalue
SELECT Element.elem_id, Element.elem_value, .nmatch
FROM Element INNER JOIN _regexp ON Element.elem_id = .rid
GROUP BY Element.elem_id, Element.elem_value, .nmatch
PIVOT .nsub;

Der resultierende Datensatz wird angezeigt oder in “Test_regex.csv”:

Picture7

Beispiel 2: Transformationsvorgang zur Erstellung eines Katalogs von Dateisystemobjekten

Die aktualisierbare Ansicht ist wie folgt definiert:

SELECT Elements.*, Attributes.attr_name, Attributes.attr_value, Attributes.elem_id AS attr_id
FROM Elements LEFT JOIN Attributes ON Elements.elem_id = Attributes.elem_id;

Die folgende Anweisung fügt ein neues Element zusammen mit einem zugehörigen Attribut in :

INSERT INTO attributes ( elem_id, attr_name, attr_value )
SELECT GetFileSystem(GetFolderDialog("Select root folder for files"),".*"
,True,True) AS elem_id, "insertDateTime" AS attr_name, Now() AS attr_value;

Diese Operation verwendet die obige Anweisung, um einen Katalog eines Dateisystems zu erstellen:

Picture8

Der erstellte Katalog ist eine Hierarchie von Elementen mit Dateisystemattributen, z.z.B.

Picture9

Eine nachfolgende Operation kann ausgewählte Dateien durch eine auf Elementen und Attributen basierende Ansicht anzeigen, z.B.

Picture10

Wie oben gezeigt, kann die Funktion GetFileSystem() den Text einer Datei extrahieren und in . speichern, entweder mit oder ohne Ersetzung von Sonderzeichen durch ihre nächsten ASCII-Entsprechungen. Diese Option ist nützlich für das Regex-Parsing von Dateien mit Textinhalt, z.B. die Dateitypen txt, sql, doc, ppt, pdf, html, usw.

Ähnliche GetData()-Funktionen importieren andere Datentypen in das MDOX-Datenbankschema. GetSheets() importiert zum Beispiel Tabellendaten aus Excel-Tabellen und Word-Dokumenten. GetWordDoc() importiert Textinhalte aus allen Dokumentformaten, die von Microsoft Word geöffnet werden können, einschließlich PDF und PowerPoint. GetXml() importiert strukturierte Daten als Elemente mit zugehörigen Attributen aus textbasierten Markup-Formaten wie XML-, XSD- und WSDL-Dateien. Implementierungsdetails für diese Datenimportmethoden werden im nächsten TDAN-Artikel, MDOX Application Development, beschrieben.

Nach dem anfänglichen Import von Quelldaten in MDOX mit Hilfe von GetData()-Methoden können neue Begriffe und Prozesse entwickelt werden, um die Daten weiter in das gewünschte Ausgabeformat zu transformieren, das exportiert oder direkt in eine verknüpfte Datenbanktabelle geladen werden kann. Einige Beispieltransformationen mit unterschiedlichem Komplexitätsgrad werden im letzten Artikel dieser Serie, MDOX Data Transformation Techniques, beschrieben.

Zusammenfassend lässt sich sagen, dass MDOX eine agile Datentransformation ermöglicht, indem es Daten und Prozesse generisch modelliert. Damit ist es möglich, eine Anwendung zu bauen, die die Datenverarbeitung innerhalb eines statischen Datenmodells erleichtert. MDOX ist in der Lage, komplizierte Transformationen automatisch auszuführen, und zwar durch einen Prozess, der aus Operationen besteht, die ausgeführt, rückgängig gemacht, überarbeitet und wiederholt oder nach Bedarf entfernt werden können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.