Dataintegraation yleisimmät ongelmat

Dataintegraatio projektit voivat olla varsin suuria investointeja ja työ ei yleensä pääty alkuperäisen projektin jälkeen. Uusia järjestelmiä rakennetaan ja liiketoiminta esittää uusia vaatimuksia, jotka tarkoittavat uusien dataintegraatioiden rakentamista. Tässä rakennustyössä täytyy olla tarkkana, muuten yritys voi huomata että rakennettu systeemi vaatii alati kasvavan ylläpitotiimin jotta dataintegraatioprosessit pysyvät pystyssä. ITssä on kyse automaatiosta, ja jatkuva manuaalinen työ voi viedä elinvoiman järjestelmien loppukäyttäjiltä. Mitkä ovat suurimmat ongelmat ja kuinka ne voi välttää?

Flat-tiedostot (Flat Files)

Flat-tiedostoja käytetään usein dataintegraatiossa, ja usein ne ovat ongelmien pääsyyllinen. Jaan tässä nämä tiedostot kahteen ryhmään:
  • automaattisesti generoidut tiedostot
  • excel-tyyppiset tiedostot, joita käyttäjät päivittävät suoraan.
Automaattisesti generoidut Flat-tiedostot Yleinen ongelma on että tiedosto ei saapunut oikeaan aikaan. Paras ratkaisu tähän ongelmaan on tiedoston generoivan prosessin linkkaaminen sitä vastaanottavaan (lukevaan) päähän. Jos tämä ei ole mahdollista, jää vaihtoehdoksi lisätä lukevan prosessin joustavuutta niin että se pystyy odottamaan tiedoston saapumista ja vasta luettuaan tiedoston käynnistämään sen jälkeen tulevat integraatioprosessit. Vaikka tämä kuulostaa ilmiselvältä, liian usein dataintegraatioita rakennetaan oletuksella että tiedosto saapuu tasan tietyllä kellonlyömällä, ja epäonnistumisen jälkeen kukaan ei ota vastuuta huonosti toimivasta prosessista. Toinen yleinen ongelma on että tiedosto ei ole oikeassa formaatissa. Tyypillisesti formaatin on rikkonut muutama rivi, joista löytyy tiedoston tulkitsemislogiikan käyttämiä erikoismerkkejä väärästä paikasta (esim. rivinvaihto tai sarake-erotin). Nämä on sellaisia asioita jotka tiedoston generoivan prosessin pitäisi aina tarkastaa, erityisesti sellaisten kenttien osalta joissa alkuperäinen inputti on tullut avoin tekstikenttä-tyyppisestä syötöstä. Tiedoston generoivan prosessin tulee tarkastaa onko edellämainittuja erikoismerkkejä väärissä paikoissa ja poistaa ne. Tapauksesta riippuen myös lukevassa päässä voi olla joustavuutta niin että se selviää muutamasta 'huonosta' rivistä. Flat-fileet joita käyttäjät päivittävät suoraan (esim. excelit) Tämä onkin vaikeampi kategoria, ja en oikeastaan suosittelisi tällaista käyttämään ollenkaan sillä näiden muokkaamisessa tuntuu tulevan virheitä joka toisella kerralla. Ja vaikka tiedostoa muokkaava henkilö olisikin hyvin tarkka työssään, voi olla että hän jossain vaiheessa siirtyy muuhun työpaikkaan tai tehtäviin, ja seuraavaksi exceliin arvoja syöttävä henkilö ei onnistukkaan yhtä hyvin. Tämän tyyppisen tiedon syöttämisen tulisi tapahtua sellaisen systeemin läpi joka jo syöttövaiheessa tarkastaa tietotyyppien oikeellisuuden ja mahdollisesti myös arvojen oikeellisuuden.

Tietokannat

Tietokannoista lukemisessa on huomattavasti vähemmän ongelmia. Mutta toki silloin tällöin yhteys voi pätkäistä tai luettava tietokanta on muuten kiireinen (lukossa). Ongelmaa voi helpottaa asettamalla dataa lukevan prosessin yrittämään uudestaan, jos ensimmäinen kerta epäonnistui. Toki jos luettava tai kohde -tietokanta on jatkuvasti hidas tai lukossa, on tutkittava mikä tilanteen aiheuttaa ja korjattava ongelman juurisyy.

Huonosti toteutetut datatransformaatiot

Datatransformaatiot täytyy tehdä niin että tietotyypitykset otetaan huomioon. Esimerkiksi jos meillä on 'If x=y then a else b' -lauseke joka ei pysty käsittelemään arvoa null kentässä x. Vaikka null arvoja ei kyseisessä kentässä tällä hetkellä näkyisikään, täytyy prosessin pystyä ne käsittelemään, jos lähdetietoihin on mahdollista sellaisia arvoja syöttää.

Liian paljon turhia riippuvuuksia

Edellä mainitut ongelmat voivat suurentua merkittävästi jos dataintegraatioprosessien välille on rakennettu liikaa riippuvuuksia. Tarpeettomia riippuvuuksia ei tietenkään pitäisi olla ollenkaan. Jos prosessi x on loogisesti riippuvainen vain ja ainoastaan prosessien y ja z onnistumisesta, ei ylimääräistä riippuvuutta muihin prosesseihin tule rakentaa. Suurissa dataintegraatioprojekteissa tämä tulee erittäin tärkeäksi, sillä pahimmassa tapauksessa mikä tahansa virhe pysäyttää koko dataintegraatioprosessin, eikä vain sitä osaa joka on riippuvainen virheen aiheuttaneesta osasta, johtaen toistuviin manuaalilatauksiin. Dataintegraatioprosessien riippuvuudet toisiinsa tulee asettaa minimitasolle.

Virhe johtaa aina manuaaliseen uudelleen lataukseen

Joku voi kuitenkin mennä pieleen. Erityisesti transaktio-tyyppisen datan latauksissa on hyvä idea sisällyttää ladattavaan batchiin enemmän kuin vain tarpeellinen data, esim. 1 päivän sijaan viimeisen kahden päivän data. Näin prosessi korjaa itse itsensä seuraavan päivän automaattisessa latauksessa.

Lisää ajankohtaisia julkaisuja:

Microsoft Cloud Adoption Framework for Azure – Viitekehys Azuren pilvipalveluiden käytön hyötyjen varmistamiseen
Tutustu tarinaan
Data-analyytikko tukiälyn eli Copilottien aikakaudella.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys? – Lisää tuottavuutta ohjelmistokehitykseen
Tutustu tarinaan
Microsoft Fabric ja Data Mesh
Tutustu tarinaan
Fabric kapasiteetinhallinta
Tutustu tarinaan

Lisää ajankohtaisia julkaisuja:

Microsoft Cloud Adoption Framework for Azure – Viitekehys Azuren pilvipalveluiden käytön hyötyjen varmistamiseen
Tutustu tarinaan
Data-analyytikko tukiälyn eli Copilottien aikakaudella.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys? – Lisää tuottavuutta ohjelmistokehitykseen
Tutustu tarinaan
Microsoft Fabric ja Data Mesh
Tutustu tarinaan
Fabric kapasiteetinhallinta
Tutustu tarinaan