Liiketoimintatiedon hyödyntäminen, eli Business Intelligence (BI), tukee yritysten päätöksentekoa jalostamalla liiketoiminnasta kerättyä dataa päätöksentekijöiden tarpeisiin hyödyntäen ohjelmistoja, jotka tallentavat, prosessoivat, analysoivat ja visualisoivat liiketoimintatietoa päätöksenteon tueksi (Negash, 2004).
Loppukäyttäjälle BI-järjestelmät usein näyttäytyvät raportteina, yksittäisinä dataa visualisoivina kuvaajina tai vuorovaikutteisina ohjelmistoina, jotka tarjoavat tilannenäkymän liiketoimintatiedon tutkimiseen (Dudycz, 2010). Yksinkertaisimmillaan tämä voi tarkoittaa Excel-tiedostoa, joka visualisoi tiedostoon tallennettua taulukkomuotoista dataa Excel-ohjelmiston sisäänrakennetuilla diagrammeilla (Tutunea & Rus, 2012). Kehittyneemmät ratkaisut kuitenkin käyttävät käyttötarkoitukseen paremmin soveltuvia ohjelmistoja, kuten Power BI tai Tableau (Khatuwal & Puri, 2022).
PowerBI ja Tableau -sovellusten tapaiset BI-ohjelmistot tarjoavat käyttäjille helpon käyttöliittymän interaktiivisten tilannenäkymien luomiseen, ilman että käyttäjän tarvitsee osata ohjelmoida. Tällaiset no-code/low-code -työkalut mahdollistavat ratkaisujen nopean toteutuksen, mutta voivat asettaa muita rajoitteita ratkaisulle, kuten lopputuloksen hankalan muokattavuuden (Käss ym., 2022). Nämä rajoitteet vaikeuttavat tällaisten ohjelmistojen hyödyntämistä tietyissä käyttötapauksissa, joissa esimerkiksi tarvitaan tapauskohtaisia datan visualisointimenetelmiä, joita työkalut eivät jo valmiiksi tarjoa.
Vaikka Power BI ja Tableau kummatkin tarjoavat käyttäjilleen laajennusrajapinnan, jonka kautta ohjelmiston toiminnallisuutta voi laajentaa (Power BI Custom Visuals, 2024; Tableau Dashboard Extensions API, 2024), kannattaa tällaisissa käyttötapauksissa miettiä onko haluttuun lopputulokseen helpompi päästä käyttäen alemman tason teknologioita, kuten ratkaisun ohjelmoiminen alusta lähtien käyttäen Python-ohjelmointikieltä.
Python on usean lähteen mukaan tällä hetkellä suosituin ohjelmointikieli.
Tässä artikkelissa käydään läpi hyviä ja huonoja puolia Python-ohjelmointikielen käytöstä BI-datan visualisointiin. Artikkeli on erityisesti suunnattu lukijoille, jotka käyttävät tällä hetkellä Excel, Power BI tai Tableau -ohjelmistojen tapaisia ratkaisuja BI-datan visualisointiin, mutta ovat törmänneet näiden ohjelmistojen rajoitteisiin, ja haluavat tietoa muista työkaluista, joilla BI-datan visualisointia voi toteuttaa. Artikkelin sisältö voi toimia myös toisinpäin, tuoden lisätietoa ohjelmistoalan ammattilaisille tilanteista, joissa no-code/low-code työkalut ovat riittäviä ratkaisuja tavoitteen saavuttamiseen, näin säästäen toteutukseen uppoavaa kehitysaikaa. Python-ohjelmointikielen lisäksi artikkelin sisältö pätee osittain myös muihin yleiskäyttöisiin ohjelmointikieliin, ja myös muunlaisen datan, kuin pelkästään BI-datan, visualisointiin.
Hyvät puolet Python-ohjelmointikielen käytössä BI-datan visualisointiin
Edellä mainittu no-code/low-code -ohjelmistojen visualisointien muokattavuuden hankaluus ei ole ongelma silloin, kun ratkaisu toteutetaan alusta lähtien käyttäen oikeaa ohjelmointikieltä. Ohjelmointikieliä käytettäessä visualisointi toteutetaan käyttäen visualisointikirjastoja. Vaikka jotkin kirjastot voivat asettaa rajoitteita sille minkä tyyppisiä visualisointeja niillä voi saavuttaa, niin Pythonille on saatavilla myös visualisointikirjastoja, kuten Matplotlib ja siihen perustuva Seaborn, joissa käyttäjä voi määrittää jopa pikselitasolla objektien sijoituspaikan kuvaajissa, täten mahdollistaen rajoittamattoman räätälöinnin datan visualisoinnissa (Hunter, 2007; Waskom, 2021).
Visualisoinnin muokattavuuden lisäksi oikean Python-ohjelmointikielen käyttö helpottaa räätälöintiä myös datan haku- ja käsittelykerroksilla. Python on usean lähteen mukaan tällä hetkellä suosituin ohjelmointikieli (Github Language Stats, 2024; PYPL Index, 2024). Suuren käyttäjämäärän vuoksi ohjelmointikielille on tehty paljon avoimen lähdekoodin kirjastoja, joka on johtanut siihen, että kielelle löytyy tuki SQL-tietokantojen lisäksi myös monille harvemmin käytetyille tietolähteille. Sen lisäksi kielelle löytyy datan käsittelyä varten paljon käytetty Pandas-kirjasto, jolla datan suodatus, yhdistely ja prosessointi onnistuu helposti (McKinney, 2010).
Suuri käyttäjäjoukko tarkoittaa myös sitä, että yhteisö on tehnyt paljon ilmaiseksi saatavana olevaa opetusmateriaalia, sekä moniin yleisesti törmättyihin ongelmiin löytyy valmis ratkaisu yhteisöfoorumeilta kuten StackOverflow. Tämä myös vaikuttaa siihen, että modernit tekoälyavustajat, kuten ChatGPT, Copilot tai Gemini, saattavat toimia paremmin tällaisten suosittujen ohjelmointikielten kanssa, koska niiden opettamiseen on ollut saatavilla enemmän dataa (Orlanski ym., 2023).
Koska Python on yleiskäyttöinen ohjelmointikieli, jota käytetään myös data-analytiikan ulkopuolella esimerkiksi verkkokehityksessä, niin kielellä toteutettuja projekteja tukemaan on olemassa suuri määrä menetelmiä ja työkaluja, jotka tukevat kehitystä projektinhallinnan ja projektikäytänteiden näkökulmasta. Nämä menetelmät ja työkalut tulevat ohjelmistokehityksen maailmasta, jossa näitä aiheita on tutkittu ja kehitetty jo pitkän aikaa.
Yksi tällaisista ohjelmistoprojekteista tutusta työkaluista on versionhallinta. Versionhallintatyökalut, kuten esimerkiksi Git, mahdollistavat ohjelmistoprojektin muutosten hallinnan järkevästi niin, että aikaisimpiin versioihin voi palata, ja kaikki projektiin tehdyt muutokset voidaan dokumentoida helposti (Zolkifli ym., 2018). Tämä tuo varmuutta kehitysprosessiin, koska ohjelmoijan ei tarvitse pelätä muutosten tekemistä koodiin sen takia, että muutoksia ei voisi peruuttaa. Versionhallinta myös mahdollistaa useamman ohjelmoijan yhtäaikaisen työskentelyn saman projektin kimpussa hallitsemalla yhtäaikaisten muutosten yhdistämisen yhteiseen versioon.
Toinen yleisesti ohjelmistokehitysprojekteissa käytössä oleva käytänne on testausautomaatio, joka voi tuoda lisäarvoa myös BI-datan visualisointiprojekteihin. Versionhallinnan tapaan myös testausautomaatio tuo ohjelmoijille varmuutta muutosten tekemiseen projektiin. Testauksella voidaan varmistaa, että projektissa aikaisemmin tehdyt toiminnallisuudet eivät mene rikki uusien muutosten myötä, mikä voisi johtaa ohjelmiston vialliseen toimintaan ja pahimmillaan visualisointien virheellisyyteen. Koska BI-datan visualisointia käytetään päätöksen teon tukena, on todella tärkeää, että visualisoinnit ovat paikkansapitäviä.
Visualisoinnin lopputuloksena olevaa kuvaajaa on hankala testata sellaisenaan, mutta ottamalla testaus huomioon jo ratkaisun suunnitteluvaiheessa, ohjelmiston rakenne voidaan suunnitella sellaiseksi, että datan haku ja käsittelyoperaatiot pystytään erottamaan muusta ohjelmistologiikasta ja testata käyttäen yksikkötestausmenetelmää. Tällä menetelmällä voidaan testata esimerkiksi monimutkaiset datan yhdistelylogiikat tai datan suodatuslogiikat, joissa virheiden syntyminen on helposti mahdollista.
Yksikkötestauksessa yksittäiselle ohjelmistofunktion toiminnallisuudelle kirjoitetaan testit, joilla voidaan varmistaa, että funktio toimii ulos päin aina samalla tavalla, vaikka funktion sisäistä toteutusta muutetaan virheiden korjauksen tai uusien ominaisuuksien myötä. Ilman testausta funktion sisäiset muutokset voivat vahingossa muuttaa funktion ulkoista toiminnallisuutta, eikä se enää toimikkaan tavalla, miten jokin toinen osa ohjelmistoa odottaa kyseisen funktion toimivan. Tämä voi johtaa lopputuloksen virheellisyyteen. Testaamalla funktion odotettua toiminnallisuutta ulkoapäin, tällaiset virheet voidaan saada kiinni jo siinä vaiheessa, kun ohjelmoija alkaa tekemään muutoksia funktion toteutukseen.
Huonot puolet Python-ohjelmointikielen käytössä BI-datan visualisointiin
Power BI ja Tableau -ohjelmistojen tyyppiset no-code/low-code -ratkaisujen olemassaolo ja suosio todistaa kuitenkin, että visualisointiratkaisujen toteutuksessa alhaisen tason ohjelmointikielillä on myös huonoja puolia.
Tekijän korkea osaamisvaatimus on yksi ohjelmointikielien huonosta puolesta. No-code/low-code -työkalut on suunniteltu helpoiksi käyttää graafisten käyttöliittymien kautta siten, että myös käyttäjät, jotka eivät osaa ohjelmoida, pystyisivät käyttämään alustoja (Pinho ym., 2023). Ohjelmointikieliä käytettäessä käyttäjän on kuitenkin osattava ohjelmoida, ja ohjelmoinnin oppiminen on useille ihmisille hankalaa (Jenkins, 2002).
Alusta asti ohjelmointikielellä toteutetun ratkaisun tarjoaminen loppukäyttäjille vaatii usein lisätyötä.
Myös ratkaisun toteutukseen uppoava aika voi olla korkea, kun toteutusta lähdetään tekemään alusta lähtien alhaisen tason ohjelmointikielillä. Vaikka modernissa ohjelmistokehityksessä hyödynnetään paljon avoimen lähdekoodin ohjelmistokirjastoja ajan säästämiseksi, niin ohjelmistokirjastoissa on kuitenkin eroja niiden abstraktiotasossa.
Korkean abstraktiotason omaavat ohjelmistokirjastot vaativat tietyn tavan tehdä asioita mikä rajoittaa niiden muokattavuutta, joka puolestaan rajoittaa niiden käyttökohteita, täten vähentäen käyttäjien määriä. Matalamman abstraktiotason kirjastot taipuvat useampaan käyttökohteeseen, joten ne ovat suositumpia ja usein paremmin ylläpidettyjä, sekä usein enemmän yhteisön suosittelemia. Abstraktiotason madaltuessa ratkaisun toteutukseen vaatima aika kuitenkin kasvaa. Tämä on korkean muokattavuuden kääntöpuoli.
Yhtenä ongelmana ratkaisun tekemisessä ohjelmointikielellä on myös lopullisen toteutuksen käyttöönotto ja tarjoaminen loppukäyttäjille. Power BI ja Tableau -ohjelmistojen tyyppisiä BI ohjelmistoja käytetään usein pilvipalveluympäristöissä, johon kirjaudutaan organisaation käyttäjätunnuksilla, ja jossa käyttäjien käyttöoikeudet on helppo säätää kohdilleen.
Alusta asti ohjelmointikielellä toteutetun ratkaisun tarjoaminen loppukäyttäjille vaatii usein lisätyötä. Esimerkiksi alusta lähtien Python-ohjelmointikielellä toteutettu interaktiivinen tilannenäkymäohjelmisto vaatii palvelinalustan, jolla kyseistä ohjelmaa ajetaan. Palvelin ja sovellus vaativat ylläpidon kyberuhkien välttämiseksi (Schwarzkopf ym., 2012), ja sovelluksen käyttöoikeuksien rajoitus ei ole yhtä helppoa kuin valmiilla BI-alustoilla.
Milloin valita Python-ohjelmointikieli BI-datan visualisointiin
Python-ohjelmointikielen käytössä BI-datan visualisointiin on hyviä ja huonoja puolia, jotka on tuotu esille tässä artikkelissa. Jos visualisoinnin toteuttaja on aiemmin käyttänyt Power BI ja Tableau tyyppisiä BI-työkaluja, ja näiden työkalujen ominaisuudet riittävät haluttujen toiminnallisuuksien toteuttamiseen, niin niiden käyttö on ensisijaisesti suositeltavaa myös jatkossa. Näiden alustojen käyttökokemus on yhtenäinen kehitysvaiheesta käyttövaiheeseen, ja nämä alustat usein integroituvat helposti organisaation muiden työkalujen kanssa mahdollistaen helpon ja tietoturvallisen BI-tiedon jakamisen.
Python-ohjelmointikielen käyttöä ratkaisun toteuttamiseen kannattaa harkita tilanteessa, jossa tietää valmiiden BI-ratkaisujen rajoitteiden tulevan vastaan toteutuksessa, jolloin Python-ohjelmointikielen joustavuus voi helpottaa ratkaisun toteuttamista. Toinen suositeltava käyttötilanne Python-ohjelmointikielellä toteutetulle ratkaisulle on silloin, kun visualisoinnin oikeellisuus on erityisen kriittistä. Tällöin ohjelmistotekniikan projektinhallintakäytänteet, kuten versionhallinta ja testausautomaatio, tuo varmuutta toteutukselle, jota on hankala saavuttaa BI-työkaluilla.
Jos ratkaisua lähdetään toteuttamaan Python-ohjelmointikielellä, niin toteutuksen elinkaari täytyy suunnitella alusta loppuun heti projektin alkuvaiheessa. Ratkaisun toteutuksen jälkeen se pitää tarjota käytettäväksi loppukäyttäjille tavalla, joka ei vaaranna organisaation kyberturvallisuutta.
VauhtiData – Datasta vauhtia valmistavan teollisuuden liiketoimintaan
VauhtiData-hankkeessa pilotoidaan dataan perustuvia toimintamalleja, tukien valmistavan teollisuuden vihreää siirtymää. Osana hanketta kasvatetaan alalla toimivien tietämystä data-analytiikasta ja taitoa hyödyntää data-analyysimenetelmiä, mahdollistaen uusien tuotteiden ja palvelujen innovoinnin teollisuuden käyttöön. VauhtiData on Euroopan unionin osarahoittama hanke.