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

COL03x - feature image oneil already 300x300Hvad er agilitet? Jeg vil definere det som evnen til at bevæge sig hurtigt, flydende og effektivt i alle retninger. Ved datatransformation bevæger information sig gennem en proces, der består af en sekvens af operationer. Ideelt set bør processerne kunne vendes, hvilket sikrer, at ingen oplysninger går tabt.

Gennem at modellere transformationsoperationer generisk i tabel , gør MDOX det muligt at skabe agile datatransformationer, der nemt kan køres, vendes, revideres og gentages eller fjernes.

I vores tidligere artikel, Introduktion til MDOX, fokuserede vi på Meta-Data Objects (MDO) som en universel datamodel, der gemmer oplysninger som objekter: hierarkisk strukturerede samlinger af dataelementer og attributter, der er relateret til et hierarki af metadata Termer med valgfrie Egenskaber. I denne artikel vil vi fokusere på de Processer, der implementerer agile datatransformationer, og dermed sætte “X” i MDOX.

Tabel 5 fra den foregående artikel “Introduktion til MDOX” viser de vigtigste felter i tabellen:

Picture1

Tabellen indeholder også flere felter, der styrer, hvordan det valgfrie regulære udtryk anvendes på elementer i den overordnede term, for at muliggøre rekursiv parsing af underordnede elementer fra overordnet tekst:

Picture2

Matches for det regulære udtryk i feltet gemmes midlertidigt i tabellen :

Picture3Hver post i tabellen definerer en enkelt transformationsoperation:

  1. Hvis feltet indeholder et gyldigt regulært udtryk, anvendes det pågældende udtryk på den lange tekst . for alle elementer, der er relateret til det overordnede udtryk for .. Regex-matches gemmes midlertidigt i tabellen .
  2. Hvis feltet indeholder en gyldig SQL-anvisning, udføres denne anvisning af programmet. Select- og Transform-forespørgsler vises enten på skærmen, eller hvis processen er automatiseret, eksporteres de som regneark til den aktuelle programmappe. Indsæt-angivelser tilføjer nye poster til en tabel eller en visning, der kan opdateres. Opdaterings- eller Slet-angivelser påvirker den valgte post.

Bemærk, at tilstedeværelsen af et ugyldigt regulært udtryk eller en ugyldig SQL-angivelse vil medføre, at en proces mislykkes. Udvikleren skal gentagne gange teste hver operation, indtil hele processen udføres fejlfrit.

Operationer for en given term udføres i rækkefølge af . Hvis en term har underordnede termer, og indstillingen “descend tree” er valgt, behandles de underordnede termer i rækkefølge. Den overordnede rækkefølge af operationer inden for en transformation bestemmes således af både . og .. Du kan flytte en tidligere udviklet operation til en ny placering ved blot at opdatere disse felter. Ved hjælp af MDOX-programmet kan man nemt oprette nye termer og operationer eller opdatere navnet, beskrivelsen og rækkefølgen af eksisterende termer og operationer. Hvis et data- eller metadataobjekt slettes, vil kaskade-sletninger fjerne alle objekter, der nedstammer fra det, f.eks. underbegreber, egenskaber, processer, elementer, attributter og regex-match. Denne adfærd er fordelagtig. Nedenfor vises et udtryk ved navn “test”, der har et underbegreb “regex” med en proces, der rapporterer regex-match, der findes i “test”-elementer. Senere kan udtrykket “test” slettes, og alle underordnede objekter vil forsvinde fra databasen.

Eksempel 1: Transformationsoperation, der opretter en krydstabellerapportering fra regex-match

Picture4 Regexet “(\d+)\.\s(\w+)” indeholder 2 underudtryk, der er omsluttet af parenteser. Det første underudtryk (\d+) passer til et eller flere cifre. Det andet (w+) passer til et eller flere bogstaver. Mellem disse underudtryk svarer udtrykket ” \.\s” til et punkt efterfulgt af et whitespace-tegn. I dette eksempel søger MDOX efter regex, “(\d+)\.\s(\w+)” i elementerne i det overordnede udtryk, “test”:

Picture5

Regex-matchene gemmes i tabellen hvor

  • = 0 => det komplette regex-match, e.f.eks. “10. foo”
  • = 1 => det første underudtryksmatch, f.eks. “10”
  • = 2 => det 2. underudtryksmatch, f.eks. “bar”

Picture6

Når regex-matchene er blevet indsamlet, kompilerer og udfører en anden operation denne SQL-tekst:

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;

Det resulterende recordset vises eller eksporteres til “Test_regex.csv”:

Picture7

Eksempel 2: Transformationsoperation, der opretter et katalog over filsystemobjekter

Den opdaterbare visning er defineret som følger:

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;

Den følgende anvisning indsætter et nyt element sammen med en relateret attribut i :

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;

Denne operation bruger ovenstående anvisning til at oprette et katalog over et filsystem:

Picture8

Det oprettede katalog er et hierarki af elementer med filsystemattributter, f.eks.f.eks.

Picture9

En efterfølgende operation kan rapportere udvalgte filer via en visning baseret på elementer og attributter, f.eks.

Picture10

Som vist ovenfor kan funktionen GetFileSystem() udtrække filtekst og gemme den i ., enten med eller uden udskiftning af specialtegn med deres nærmeste ASCII-ækvivalenter. Denne mulighed er nyttig til regex-parsing af filer med tekstindhold, f.eks. filetyperne txt, sql, doc, ppt, pdf, html osv.

Sammenlignende GetData()-funktioner importerer andre typer data til MDOX-databaseskemaet. F.eks. importerer GetSheets() tabelledata fra Excel-regneark og Word-dokumenter. GetWordDoc() importerer tekstindhold fra ethvert dokumentformat, der kan åbnes af Microsoft Word, herunder PDF og PowerPoint. GetXml() importerer strukturerede data som elementer med relaterede attributter fra tekstbaserede markupformater som XML-, XSD- og WSDL-filer. Implementeringsdetaljer for disse dataimportmetoder vil blive beskrevet af den næste TDAN-artikel, MDOX Application Development.

Efter den indledende import af kildedata til MDOX ved hjælp af GetData()-metoder kan der udvikles nye termer og processer til yderligere at transformere dataene til det ønskede outputformat, som kan eksporteres eller indlæses direkte i en linket databasetabel. Nogle eksempler på transformationer med forskellige grader af kompleksitet vil blive beskrevet i den sidste artikel i denne serie, MDOX Data Transformation Techniques.

Sammenfattende giver MDOX mulighed for agil datatransformation ved at modellere data og processer generisk. Dette gør det muligt at opbygge en applikation, der letter databehandlingen inden for en statisk datamodel. MDOX kan udføre komplicerede transformationer automatisk gennem en proces, der er opbygget af operationer, som kan køres, omvendes, revideres og gentages eller fjernes efter behov.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.