Berättelser och tips från fältet: Agile Data Transformation using MDOX

COL03x - feature image oneil already 300x300Vad är agilitet? Jag skulle definiera det som förmågan att röra sig snabbt, smidigt och effektivt i vilken riktning som helst. Vid datatransformation rör sig information genom en process som består av en sekvens av operationer. I idealfallet bör processerna vara reversibla, vilket säkerställer att ingen information går förlorad.

Genom att modellera omvandlingsoperationer generiskt i tabell , möjliggör MDOX skapandet av agila datatransformationer som enkelt kan köras, vändas, revideras och upprepas eller tas bort.

I vår tidigare artikel, Introduktion av MDOX, fokuserade vi på Meta-Data Objects (MDO) som en universell datamodell som lagrar information som objekt: hierarkiskt strukturerade samlingar av data Elements och Attributes, som är relaterade till en hierarki av metadatatermer med valfria Egenskaper. I den här artikeln kommer vi att fokusera på de processer som genomför agila datatransformationer och därmed sätter “X” i MDOX.

Tabell 5 från den tidigare artikeln “Introduktion till MDOX” visar tabellens huvudfält:

Picture1

Tabellen innehåller också flera fält som styr hur det valfria reguljära uttrycket tillämpas på element i den överordnade termen, för att möjliggöra rekursiv analysering av underordnade element från överordnad text:

Picture2

Matchningar för det reguljära uttrycket i fältet lagras tillfälligt i tabellen :

Picture3Varje post i tabellen definierar en enskild omvandlingsoperation:

  1. Om fältet innehåller ett giltigt reguljärt uttryck tillämpas det uttrycket på den långa texten . för alla element som är relaterade till den överordnade termen .. Regexmatchningar lagras tillfälligt i tabellen .
  2. Om fältet innehåller ett giltigt SQL-uttalande, utförs uttalandet av programmet. Frågorna Select och Transform visas antingen på skärmen eller, om processen är automatiserad, exporteras som kalkylblad till den aktuella programkatalogen. Insert-anvisningar lägger till nya poster i en tabell eller uppdaterbar vy. Uppdaterings- eller raderingsinstruktioner påverkar vald post.

Notera att närvaron av ett ogiltigt reguljärt uttryck eller SQL-instruktion leder till att en process misslyckas. Utvecklaren måste upprepade gånger testa varje operation tills hela processen utförs felfritt.

Operationer för en viss term utförs i ordning av . Om en term har underordnade termer och alternativet “descend tree” är valt, behandlas underordnade termer i ordningsföljd. Den övergripande ordningen för operationer inom en omvandling bestäms alltså av både . och .. Du kan flytta en tidigare utvecklad operation till en ny plats helt enkelt genom att uppdatera dessa fält. Med hjälp av MDOX-programmet kan man enkelt skapa nya termer och operationer eller uppdatera namn, beskrivning och ordningsföljd för befintliga termer och operationer. Om ett data- eller metadataobjekt raderas, kommer kaskadrad radering att ta bort alla objekt som härstammar från det, t.ex. undertermer, egenskaper, processer, element, attribut och regexmatchningar. Detta beteende är fördelaktigt. Nedan visas en term med namnet “test” som har en underordnad term “regex” med en process som rapporterar regexmatchningar som hittas i “test”-element. Senare kan termen “test” tas bort och alla underordnade objekt kommer att försvinna från databasen.

Exempel 1: Transformationsprocess som skapar en korstabellrapport från regexmatchningar

Picture4 Regexet “(\d+)\.\s(\w+)” innehåller två underuttryck som är inneslutna inom parenteser. Det första deluttrycket (\d+) matchar en eller flera siffror. Det andra (w+) matchar en eller flera bokstäver. Mellan dessa deluttryck matchar uttrycket ” \.\s” en punkt följt av ett vitrymdstecken. I detta exempel söker MDOX efter regex, “(\d+)\.\s(\w+)” i elementen i den överordnade termen “test”:

Picture5

Regexmatchningarna lagras i tabellen där

  • = 0 => den fullständiga regexmatchningen, e.t.ex. “10. foo”
  • = 1 => den första deluttrycksmatchningen, t.ex. “10”
  • = 2 => den andra deluttrycksmatchningen, t.ex. “bar”

Picture6

När regexmatcherna har samlats in kompileras och exekveras denna SQL-text i en annan operation:

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;

Den resulterande datamängden visas eller exporteras till “Test_regex.csv”:

Picture7

Exempel 2: Transformationsoperation som skapar en katalog över filsystemobjekt

Den uppdaterbara vyn definieras på följande sätt:

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;

Följande anvisning infogar ett nytt element tillsammans med ett relaterat 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;

Den här operationen använder uttalandet ovan för att skapa en katalog över ett filsystem:

Picture8

Den skapade katalogen är en hierarki av element med filsystemattribut, t.ex.

Picture9

En efterföljande operation kan rapportera utvalda filer genom en vy baserad på element och attribut, t.ex.

Picture10

Som framgår ovan kan funktionen GetFileSystem() extrahera filtext och lagra den i ., antingen med eller utan att specialtecken ersätts med deras närmaste ASCII-ekvivalenter. Detta alternativ är användbart för regex-parsning av filer med textinnehåll, t.ex. filtyperna txt, sql, doc, ppt, pdf, html etc.

Samma funktioner GetData() importerar andra typer av data till MDOX-databasens schema. GetSheets() importerar till exempel tabelldata från Excel-kalkylblad och Word-dokument. GetWordDoc() importerar textinnehåll från alla dokumentformat som kan öppnas av Microsoft Word, inklusive PDF och PowerPoint. GetXml() importerar strukturerade data som element med relaterade attribut från textbaserade markeringsformat som XML-, XSD- och WSDL-filer. Detaljer om genomförandet av dessa dataimportmetoder kommer att beskrivas i nästa TDAN-artikel, MDOX Application Development.

Efter den första importen av källdata till MDOX med hjälp av GetData()-metoderna kan nya termer och processer utvecklas för att ytterligare omvandla data till det önskade utdataformatet, som kan exporteras eller laddas direkt till en länkad databastabell. Några exempel på transformationer med olika grad av komplexitet kommer att beskrivas i den sista artikeln i den här serien, MDOX Data Transformation Techniques.

Sammanfattningsvis möjliggör MDOX smidig datatransformation genom att modellera data och processer generiskt. Detta gör det möjligt att bygga en applikation som underlättar databehandling inom en statisk datamodell. MDOX kan utföra komplicerade omvandlingar automatiskt, genom en process, uppbyggd av operationer, som kan köras, vändas, revideras och upprepas, eller tas bort vid behov.

Lämna ett svar

Din e-postadress kommer inte publiceras.