Tales & Tips from the Trenches: Agile Data Transformation using MDOX

COL03x - feature image oneil already 300x300Czym jest zwinność? Zdefiniowałbym ją jako zdolność do szybkiego, płynnego i efektywnego poruszania się w dowolnym kierunku. W transformacji danych, informacja porusza się poprzez proces składający się z sekwencji operacji. Idealnie, procesy powinny być odwracalne, zapewniając w ten sposób, że żadna informacja nie zostanie utracona.

Dzięki modelowaniu operacji transformacji generycznie w tabeli, MDOX umożliwia tworzenie zwinnych transformacji danych, które mogą być łatwo uruchomione, odwrócone, poprawione i powtórzone lub usunięte.

W naszym poprzednim artykule, Wprowadzenie do MDOX, skupiliśmy się na Meta-Data Objects (MDO) jako uniwersalnym modelu danych, który przechowuje informacje jako obiekty: hierarchicznie uporządkowane kolekcje danych Elementów i Atrybutów, powiązane z hierarchią metadanych Terminów z opcjonalnymi Właściwościami. W tym artykule skupimy się na Procesach, które implementują zwinne transformacje danych, wprowadzając tym samym “X” do MDOX.

Tabela 5 z poprzedniego artykułu, “Wprowadzenie do MDOX” pokazuje główne pola tabeli:

Picture1

Tabela zawiera również kilka pól, które kontrolują, w jaki sposób opcjonalne wyrażenie regularne jest stosowane do elementów terminu nadrzędnego, aby umożliwić rekursywne parsowanie elementów potomnych z tekstu nadrzędnego:

Picture2

Pasujące wyrażenia regularne w polu są tymczasowo przechowywane w tabeli :

Picture3Każdy rekord w tabeli definiuje pojedynczą operację transformacji:

  1. Jeśli pole zawiera poprawne wyrażenie regularne, to wyrażenie to jest stosowane do długiego tekstu . dla wszystkich elementów powiązanych z terminem nadrzędnym … Dopasowania Regex są tymczasowo przechowywane w tabeli .
  2. Jeśli pole zawiera poprawne wyrażenie SQL, wówczas wyrażenie to jest wykonywane przez aplikację. Zapytania Wybierz i Przekształć są wyświetlane na ekranie lub, jeśli proces jest zautomatyzowany, eksportowane jako arkusz kalkulacyjny do bieżącego katalogu aplikacji. Polecenia wstawiania dodają nowe rekordy do tabeli lub aktualizowanego widoku. Aktualizuj lub Usuń wpływają na wybrane rekordy.

Zauważ, że obecność nieprawidłowego wyrażenia regularnego lub instrukcji SQL spowoduje niepowodzenie procesu. Programista musi wielokrotnie testować każdą operację, aż cały proces wykona się bezbłędnie.

Operacje dla danego terminu wykonywane są w kolejności . Jeśli termin posiada terminy potomne i wybrana jest opcja “descend tree”, wówczas terminy potomne przetwarzane są w kolejności sekwencyjnej. Tak więc ogólna kolejność operacji w ramach przekształcenia jest określona zarówno przez . jak i .. Można przenieść wcześniej opracowaną operację w nowe miejsce, po prostu aktualizując te pola. Korzystając z aplikacji MDOX można łatwo tworzyć nowe terminy i operacje lub aktualizować nazwę, opis i kolejność sekwencji istniejących terminów i operacji. Jeśli obiekt danych lub metadanych zostanie usunięty, to usuwanie kaskadowe usunie wszystkie obiekty od niego pochodne, np. podtematy, właściwości, procesy, elementy, atrybuty i dopasowania regex. Takie zachowanie jest korzystne. Poniżej pokazany jest termin “test” posiadający termin potomny “regex” z procesem raportującym dopasowania regex znalezione w elementach “test”. Później, termin “test” może zostać usunięty, a wszystkie obiekty zależne znikną z bazy danych.

Przykład 1: Operacja transformacji tworząca raport krzyżowy z dopasowań regex

Picture4 Wyrażenie regex “(\d+)\s(\w+)” zawiera 2 podwyrażenia, ujęte w nawiasy. Pierwsze podwyrażenie (\d+) dopasowuje jedną lub więcej cyfr. Drugie (w+) dopasowuje jedną lub więcej liter. Pomiędzy tymi podwyrażeniami znajduje się wyrażenie ” “, które odpowiada kropce, po której następuje znak białego spacji. W tym przykładzie MDOX szuka regex, “(\d+)\s(\w+)” w elementach terminu nadrzędnego, “test”:

Picture5

Pasujące regex są przechowywane w tabeli where

  • = 0 =>pełne dopasowanie regex, np.np. “10. foo”
  • = 1 => dopasowanie pierwszego podwyrażenia, np. “10”
  • = 2 => drugie podwyrażenie pasujące, np. “bar”

Picture6

Po zebraniu dopasowań regex, inna operacja kompiluje i wykonuje ten tekst SQL:

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;

Wynikowy zestaw rekordów jest wyświetlany lub eksportowany do “Test_regex.csv”:

Picture7

Przykład 2: Operacja transformacji tworząca katalog obiektów systemu plików

Widok aktualizowalny jest zdefiniowany w następujący sposób:

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;

Następująca instrukcja wstawia nowy element wraz z powiązanym atrybutem do :

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;

Operacja ta wykorzystuje powyższe stwierdzenie do utworzenia katalogu systemu plików:

Picture8

Tworzony katalog jest hierarchią elementów z atrybutami systemu plików, np.

Picture9

Późniejsza operacja może raportować wybrane pliki poprzez widok oparty na Elementach i Atrybutach, np.

Picture10

Jak pokazano powyżej, funkcja GetFileSystem() może wyodrębnić tekst pliku i zapisać go w ., z lub bez zamiany znaków specjalnych na ich najbliższe odpowiedniki ASCII. Opcja ta jest przydatna przy parsowaniu regex plików z zawartością tekstową, np. plików typu txt, sql, doc, ppt, pdf, html, itp.

Podobne funkcje GetData() importują inne typy danych do schematu bazy danych MDOX. Na przykład funkcja GetSheets() importuje dane tabelaryczne z arkuszy kalkulacyjnych Excel i dokumentów Word. GetWordDoc() importuje zawartość tekstową z dowolnego formatu dokumentu, który może być otwarty przez Microsoft Word, w tym PDF i PowerPoint. GetXml() importuje dane strukturalne jako elementy z powiązanymi atrybutami z tekstowych formatów znaczników takich jak XML, XSD i pliki WSDL. Szczegóły implementacji tych metod importu danych zostaną opisane w następnym artykule TDAN, Rozwój aplikacji MDOX.

Po początkowym zaimportowaniu danych źródłowych do MDOX za pomocą metod GetData(), można opracować nowe warunki i procesy w celu dalszego przekształcenia danych do pożądanego formatu wyjściowego, który może być wyeksportowany lub załadowany bezpośrednio do połączonej tabeli bazy danych. Niektóre przykładowe transformacje o różnym stopniu złożoności zostaną opisane w ostatnim artykule z tej serii, Techniki przekształcania danych MDOX.

Podsumowując, MDOX umożliwia zwinne przekształcanie danych poprzez generyczne modelowanie danych i procesów. Dzięki temu możliwe jest zbudowanie aplikacji, która ułatwia przetwarzanie danych w ramach statycznego modelu danych. MDOX może wykonywać skomplikowane transformacje automatycznie, poprzez proces, zbudowany z operacji, które mogą być uruchamiane, odwracane, poprawiane i powtarzane, lub usuwane w razie potrzeby.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.