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

COL03x - feature image oneil already 300x300Mitä on ketteryys? Määrittelisin sen kyvyksi liikkua nopeasti, sujuvasti ja tehokkaasti mihin tahansa suuntaan. Tietojen muuntamisessa tieto liikkuu prosessin läpi, joka koostuu operaatioiden sarjasta. Ihannetapauksessa prosessien tulisi olla palautettavissa, jolloin varmistetaan, ettei tietoa menetetä.

Mallintamalla muunnosoperaatiot geneerisesti taulukossa , MDOX mahdollistaa ketterien tietomuunnosten luomisen, jotka voidaan helposti suorittaa, peruuttaa, tarkistaa ja toistaa tai poistaa.

Edellisessä artikkelissamme, MDOX:n esittelyssä, keskityimme metatieto-objekteihin (MDO, Meta-Data Objects) yleispätevänä tietomallina, joka tallentaa tietoa objekteina: hierarkkisesti jäsenneltyinä kokoelmina datan elementeistä (Elements) ja attribuuteista (Attributes), jotka ovat sidoksissa valinnaisominaisuuksiltaan valinnaisina ominaisuuksin varustetuille metatiedon käsitteillä (Terms). Tässä artikkelissa keskitymme prosesseihin, jotka toteuttavat ketteriä tietomuunnoksia, jolloin MDOXissa on “X”.

Taulukossa 5 edellisestä artikkelista “MDOXin esittely” näkyvät taulukon tärkeimmät kentät:

Picture1

Taulukossa on myös useita kenttiä, joilla ohjataan sitä, miten valinnaista säännöllistä lauseketta sovelletaan vanhemman termin elementteihin, jotta mahdollistetaan lapsielementtien rekursiivinen jäsennys vanhemman tekstistä:

Picture2

Kentässä olevan säännöllisen lausekkeen vastaavuudet tallennetaan väliaikaisesti taulukkoon :

Picture3Taulukon jokainen tietue määrittelee yhden muunnosoperaation:

  1. Jos kenttä sisältää kelvollisen säännöllisen lausekkeen, kyseistä lauseketta sovelletaan pitkään tekstiin . kaikkiin elementteihin, jotka liittyvät vanhempaan termiin .. Regex-tulokset tallennetaan väliaikaisesti taulukkoon.
  2. Jos kenttä sisältää kelvollisen SQL-lauseen, sovellus suorittaa lausekkeen. Select- ja Transform-kyselyt näytetään joko ruudulla, tai jos prosessi on automatisoitu, ne viedään laskentataulukoina sovelluksen nykyiseen hakemistoon. Insert-lauseet lisäävät uusia tietueita taulukkoon tai päivitettävään näkymään. Päivitä- tai Poista-lausekkeet vaikuttavat valittuun tietueeseen.

Huomaa, että virheellisen säännöllisen lausekkeen tai SQL-lausekkeen esiintyminen aiheuttaa prosessin epäonnistumisen. Kehittäjän on testattava toistuvasti kukin operaatio, kunnes koko prosessi suoritetaan virheettömästi.

Tietyn termin operaatiot suoritetaan järjestyksessä . Jos termillä on lapsitermejä ja “laskeudu puuhun” -vaihtoehto on valittu, lapsitermejä käsitellään järjestyksessä. Näin ollen muunnoksen sisällä olevien operaatioiden yleinen järjestys määräytyy sekä . että .. Voit siirtää aiemmin kehitetyn operaation uuteen paikkaan yksinkertaisesti päivittämällä kyseiset kentät. MDOX-sovelluksen avulla voidaan helposti luoda uusia termejä ja operaatioita tai päivittää olemassa olevien termien ja operaatioiden nimi, kuvaus ja järjestysjärjestys. Jos data- tai metatieto-objekti poistetaan, kaskadipoistot poistavat kaikki siitä polveutuvat objektit, esim. alitermit, ominaisuudet, prosessit, elementit, attribuutit ja regex-täsmennykset. Tämä käyttäytyminen on hyödyllistä. Alla on esitetty termi nimeltä “test”, jolla on alatermi “regex” ja prosessi, joka raportoi “test”-elementtien sisältämät regex-tulokset. Myöhemmin termi “test” voidaan poistaa, jolloin kaikki tytärobjektit katoavat tietokannasta.

Esimerkki 1: Muunnosoperaatio, jolla luodaan ristiintaulukkoraportti regex-tapauksista

Picture4 Regex-tapauksessa “(\d+)\.\s(\w+)” on kaksi alilauseketta, jotka on suljettu sulkuihin. Ensimmäinen alilauseke (\d+) vastaa yhtä tai useampaa numeroa. Toinen (w+) vastaa yhtä tai useampaa kirjainta. Näiden alilausekkeiden välissä oleva lauseke ” \.\s” vastaa pistettä, jota seuraa välilyönti. Tässä esimerkissä MDOX etsii regexiä “(\d+)\.\s(\w+)” vanhemman termin “test” elementeistä:

Picture5

Regex-täsmäykset tallennetaan taulukkoon, jossa

  • = 0 => täydellinen regex-täsmäys, e.esim. “10. foo”
  • = 1 => 1. alilausekkeen vastaavuus, esim. “10”
  • = 2 => 2. alilausekkeen vastaavuus, esim. “bar”

Picture6

Kun regex-ottelut on kerätty, toinen operaatio kokoaa ja suorittaa tämän SQL-tekstin:

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;

Tuloksena saatava tietuekokonaisuus näytetään näyttöön tai viedään tiedostoon “Test_regex.csv”:

Picture7

Esimerkki 2: Muunnosoperaatio, jolla luodaan tiedostojärjestelmän objektien luettelo

Päivityskelpoinen näkymä on määritelty seuraavasti:

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;

Seuraavalla lausekkeella lisätään uusi elementti yhdessä siihen liittyvän attribuutin kanssa :

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;

Tässä operaatiossa luodaan edellä olevan lausekkeen avulla tiedostojärjestelmän luettelo:

Picture8

Luotu luettelo on hierarkia elementeistä, joilla on tiedostojärjestelmän attribuutteja, esim.esim.

Picture9

Seuraavalla toiminnolla voidaan raportoida valitut tiedostot elementteihin ja attribuutteihin perustuvan näkymän kautta, esim.

Picture10

Kuten edellä on esitetty, funktiolla GetFileSystem() voidaan poimia tiedostoteksti ja tallettaa se .:een, joko erikoismerkkien korvaamisella tai korvaamattomalla korvaamisella niiden lähimmillä ASCII-vastineilla. Tämä vaihtoehto on hyödyllinen tekstisisältöisten tiedostojen regex-jäsennyksessä, esim. tiedostotyypit txt, sql, doc, ppt, pdf, html jne.

Samankaltaiset GetData()-funktiot tuovat MDOX-tietokannan skeemaan muuntyyppisiä tietoja. Esimerkiksi GetSheets() tuo taulukkotietoja Excel-taulukoista ja Word-asiakirjoista. GetWordDoc() tuo tekstisisältöä mistä tahansa asiakirjamuodosta, jonka voi avata Microsoft Wordilla, mukaan lukien PDF ja PowerPoint. GetXml() tuo strukturoitua tietoa elementteinä ja niihin liittyvinä attribuutteina tekstipohjaisista merkintäformaateista, kuten XML-, XSD- ja WSDL-tiedostoista. Näiden tietojen tuontimenetelmien toteutuksen yksityiskohdat kuvataan seuraavassa TDAN-artikkelissa, MDOX-sovelluskehitys.

Kun lähdetiedot on aluksi tuotu MDOX:iin GetData()-menetelmien avulla, voidaan kehittää uusia termejä ja prosesseja, joiden avulla tiedot voidaan edelleen muuntaa haluttuun tulostusmuotoon, joka voidaan viedä tai ladata suoraan linkitettyyn tietokantatauluun. Joitakin esimerkkimuunnoksia, joiden monimutkaisuusaste vaihtelee, kuvataan tämän sarjan viimeisessä artikkelissa MDOX-tiedon muunnostekniikat.

Yhteenvetona voidaan todeta, että MDOX mahdollistaa ketterän tiedon muunnoksen mallintamalla tiedot ja prosessit geneerisesti. Tämä mahdollistaa sellaisen sovelluksen rakentamisen, joka helpottaa tietojen käsittelyä staattisen tietomallin sisällä. MDOX voi suorittaa monimutkaisia muunnoksia automaattisesti operaatioista rakennetun prosessin avulla, joka voidaan suorittaa, peruuttaa, tarkistaa ja toistaa tai poistaa tarpeen mukaan.

Vastaa

Sähköpostiosoitettasi ei julkaista.