Tuttu tilanne johtoryhmästä: myyntijohtajan kalvolla liikevaihto on 4,2 miljoonaa, talousjohtajan kalvolla 3,9 ja jonkun Excelissä jotain siltä väliltä. Kukaan ei ole laskenut väärin. Jokainen on vain laskenut vähän eri asian: yksi vähentää hyvitykset, toinen ei, ja kolmas katsoo tilauksia eikä laskuja. Puoli palaveria menee siihen, että selvitetään kenen luku on oikea, eikä itse asiasta ehditä puhua.
Semanttinen malli (englanniksi semantic model) on paikka, jossa tämä riita ratkaistaan etukäteen. Se on kerros tietovaraston ja raporttien välissä, ja siihen kirjataan kerran, mitä liikevaihto tarkoittaa, miten asiakkaat lasketaan ja miten taulut liittyvät toisiinsa. Power BI:ssä jokainen raportti lukee semanttista mallia, vaikka käyttäjä ei näe sitä koskaan. Hän näkee vain luvun, ja luku on sama kaikilla.
Semanttinen kerros (semantic layer) on sama ajatus isommassa mittakaavassa. Määritelmät eivät asu yhden työkalun sisällä vaan yhteisessä kerroksessa, josta Power BI, Excel, sovellukset ja tekoälyagentit hakevat ne. Kumpikaan ei ole uusi keksintö, mutta molemmista puhutaan nyt enemmän kuin koskaan, ja syy on tekoäly. Siihen palataan alempana.
Lyhyin selitys on tämä: tietomalli kertoo, missä data on, ja semanttinen malli kertoo, mitä se tarkoittaa. Tietomalli on taulut, sarakkeet ja relaatiot. Semanttinen malli on sama rakenne, johon on lisätty liiketoimintalogiikka: mittarit, hierarkiat, kuvaukset ja käyttöoikeudet.
Eroa on helpointa ajatella ravintolana. Tietovarasto on keittiö: raaka-aineet, kylmiöt ja hellat. Raportti on ruokasali, jossa asiakas istuu. Semanttinen malli on ruokalista ja reseptikansio samassa paketissa. Asiakas tilaa listalta liikevaihdon tietämättä, mitä kaikkea siihen keitettiin, ja keittiö tekee annoksen joka kerta samalla reseptillä. Jos reseptiä ei ole kirjattu, jokainen kokki tekee omansa, ja sama annos maistuu eri päivinä erilaiselta. Juuri sitä johtoryhmän kolme liikevaihtoa ovat.
Vertaus kertoo myös, mitä semanttinen malli ei ole. Se ei ole varasto, vaikka Power BI tallentaakin datan malliin import-tilassa. Mallin arvo ei ole datassa vaan resepteissä: samasta datasta voi rakentaa hyvän ja huonon mallin, ja ero näkyy vasta, kun joku kysyy siltä jotain.
Semanttinen kerros on arkkitehtuurikerros tietovaraston ja kaikkien datan käyttäjien välissä. Se määrittelee kerran, mitä liikevaihto, asiakas tai aktiivinen asiakas tarkoittaa, ja jakaa saman määritelmän raporteille, Excelille, sovelluksille ja tekoälyagenteille. Ravintolavertauksessa se on ketjun yhteinen reseptikirja: annos maistuu samalta jokaisessa toimipisteessä, vaikka keittiöt ja kokit ovat eri. Semanttinen malli kuuluu yhdelle työkalulle, semanttinen kerros ei kuulu millekään.
Semanttinen kerros kuulostaa tekoälyajan keksinnöltä, mutta idea on yli 30 vuotta vanha. Ranskalainen Business Objects haki vuonna 1991 patenttia tekniikalle, jolla liiketoimintakäyttäjä kysyy relaatiotietokannalta osaamatta SQL:ää. IT määritteli valmiiksi ”liiketoimintaobjektit”, kuten asiakkaan, liikevaihdon ja alueen, ja käyttäjä raahasi niitä raporttiin. Yhtiö kutsui kerrosta universumiksi. Nimi semanttinen kerros vakiintui vasta myöhemmin.
Sen jälkeen samaa työtä ovat tehneet OLAP-kuutiot, Cognosin Framework Manager ja Analysis Services, jonka tabular-moottori pyörii nykyään jokaisen Power BI -mallin alla. Idea ei siis ole muuttunut, kysyjä on. Kolmekymmentä vuotta semanttista kerrosta rakennettiin ihmiselle, joka ei osaa SQL:ää. Nyt sitä rakennetaan kielimallille, joka osaa SQL:ää liiankin hyvin mutta ei tiedä, mitä teidän talossanne liikevaihdolla tarkoitetaan.
Termejä käytetään sekaisin, ja se on ymmärrettävää, koska rajat ovat liukuvia. Ero kannattaa silti tuntea, koska se ratkaisee, mitä organisaation kannattaa rakentaa itse ja mitä ostaa.
| Käsite | Mitä se on | Esimerkki |
|---|---|---|
| Tietomalli | Rakenne: taulut, sarakkeet ja relaatiot. Ei riipu tuotteesta, ja saman mallin voi toteuttaa mihin tahansa alustaan. | Myynnin tähtimalli |
| Semanttinen malli | Tietomalli ja liiketoimintalogiikka yhdessä työkalussa: mittarit, hierarkiat, kuvaukset ja oikeudet. | Power BI:n semanttinen malli, Analysis Servicesin tabular-malli |
| Semanttinen kerros | Arkkitehtuurikerros, joka jakaa samat määritelmät kaikille työkaluille ja tekoälyagenteille. | Microsoft Fabric IQ:n ontologia, dbt Semantic Layer, Cube, AtScale, Snowflake Semantic Views, Databricks Metric Views |
| Metriikkakerros | Semanttisen kerroksen mittariosa: kaavat, aggregoinnit ja sallitut dimensiot koodina. | dbt:n MetricFlow |
Käytännössä semanttinen malli on semanttinen kerros, jonka omistaa yksi työkalu. Jos koko raportointi tehdään Power BI:llä, ne ovat sama asia, eikä erosta kannata menettää yöuniaan. Ero tulee vastaan siinä vaiheessa, kun samaa lukua aletaan laskea Power BI:n ohi: Python-muistikirjassa, omassa sovelluksessa tai tekoälyagentissa, joka lukee tietovarastoa suoraan. Silloin määritelmä pitää nostaa työkalun ulkopuolelle, tai jokainen työkalu keksii liikevaihdon uudelleen omalla tavallaan.
Excel on tässä hauska välitapaus. Excel, joka lukee Power BI:n semanttista mallia, on osa ratkaisua. Excel, johon on liimattu raakadataa ja kirjoitettu oma SUMIF, on osa ongelmaa.
Microsoftin maailmassa raja semanttisen mallin ja semanttisen kerroksen välillä on nyt konkreettinen. Ignite 2025 -tapahtumassa esitellyn Fabric IQ:n ytimessä on ontologia (Ontology). Se on jaettu kuvaus liiketoiminnan käsitteistä, kuten asiakkaasta, tuotteesta ja tilauksesta, sekä niiden ominaisuuksista, suhteista ja rajoitteista. Asiakas tekee tilauksen, tilaus koskee tuotetta, ja jokainen agentti puhuu samoilla sanoilla sen sijaan, että jokaiseen kehotteeseen liimattaisiin oma selitys siitä, mikä asiakas on.
Power BI -ihmiselle kiinnostavinta on se, että ontologian voi generoida olemassa olevasta semanttisesta mallista. Liikkeelle pääsee siis niistä määritelmistä, jotka ovat jo tuotannossa ja joihin on jo totuttu luottamaan. Ontologia ei myöskään ole uusi datavarasto. Sen käsitteet sidotaan olemassa olevaan dataan, kuten lakehouse-tauluihin, Eventhousen dataan ja Power BI:n semanttisiin malleihin. Työnjako on selkeä: semanttinen malli laskee, ja ontologia kertoo, mitä lasketaan ja miten käsitteet liittyvät toisiinsa. Ontologia on ollut julkistuksesta asti esikatseluversio (preview), joten tarkista sen tila ennen kuin rakennat tuotannon sen varaan.
Jos olet tehnyt Power BI:tä vähänkään pidempään, tunnet semanttisen mallin vanhalla nimellä: dataset, suomenkielisessä käyttöliittymässä tietojoukko. Microsoft nimesi sen uudelleen marraskuussa 2023. Objekti ei muuttunut lainkaan, vain nimi. Perustelu oli, että ”dataset” on liian yleinen sana eikä kerro, mitä objekti tekee, ja että se sekoittui Fabricin muihin objekteihin.
Nimenmuutos oli harvinaisen onnistunut, koska dataset tarkoitti kaikkea ja ei mitään. CSV-tiedosto on dataset, ja niin on Excelin välilehtikin. Semanttinen malli sen sijaan kertoo, mitä objekti tekee: antaa datalle merkityksen. Vanha nimi elää silti sitkeästi. REST-rajapinnoissa, PowerShell-komennoissa ja vanhoissa ohjeissa puhutaan edelleen dataseteistä, joten kun haet ohjetta, hae molemmilla nimillä.
Power BI:n semanttinen malli ajetaan Analysis Servicesin tabular-moottorilla ja VertiPaq-pakkauksella. Sama malli palvelee raportteja, Exceliä, Copilotia ja XMLA-päätepisteen kautta muita työkaluja. Mallissa on kuusi osaa, ja jokainen niistä pystyy pilaamaan luvun omalla tavallaan:
| Osa | Mitä se tekee | Miksi sillä on väliä |
|---|---|---|
| Taulut ja relaatiot | Faktat ja dimensiot, relaatioiden suunta ja kardinaliteetti | Väärä suodatussuunta tai kardinaliteetti tuottaa vääriä lukuja ilman yhtään virheilmoitusta |
| Mittarit (DAX) | Liiketoimintalogiikka: summat, suhdeluvut, aikavertailut | Kaava kirjoitetaan kerran, ja jokainen raportti käyttää samaa |
| Hierarkiat | Porautumispolut, esim. vuosi → kuukausi → päivä | Käyttäjä liikkuu datassa ilman, että raportin tekijä rakentaa polut joka kerta uudelleen |
| Kuvaukset ja synonyymit | Kertovat, mitä taulu, sarake tai mittari tarkoittaa | Copilot ja tekoälyagentit valitsevat mittarin näiden perusteella |
| Rivitason suojaus (RLS) | Rajaa rivit käyttäjän mukaan | Oikeudet pysyvät voimassa kaikissa raporteissa ja työkaluissa, koska ne on määritelty mallissa eikä raportissa |
| Tallennustila | Import, DirectQuery tai Direct Lake | Ratkaisee nopeuden, datan tuoreuden ja mallin kokorajat |
Kun Power BI -projekti tallennetaan PBIP-muodossa, semanttinen malli tallentuu TMDL-tiedostoiksi, joita voi lukea ja versioida Gitissä kuin mitä tahansa koodia. Liikevaihto ja aktiiviset asiakkaat näyttävät siellä tältä:
table Myynnit
/// Laskutettu myynti euroina ilman arvonlisäveroa, hyvitykset vähennetty.
/// Ei sisällä avoimia tilauksia eikä tarjouksia.
measure Liikevaihto = SUM ( Myynnit[LaskutettuEur] ) - SUM ( Myynnit[HyvitettyEur] )
formatString: #,##0 €
displayFolder: Myynti
/// Asiakas on aktiivinen, jos sillä on laskutettua myyntiä viimeisen 90 päivän aikana.
measure 'Aktiiviset asiakkaat' =
CALCULATE (
DISTINCTCOUNT ( Myynnit[AsiakasAvain] ),
DATESINPERIOD ( Kalenteri[Paivamaara], MAX ( Kalenteri[Paivamaara] ), -90, DAY )
)
formatString: #,##0
Kolmella vinoviivalla alkavat rivit ovat mittarin kuvaus. Se on sama teksti, joka näkyy Power BI Desktopin kuvauskentässä, ja juuri sen Copilot lukee, kun se päättää, mitä mittaria käyttää. Kuvaus ei siis ole dokumentaatiota mallin vieressä vaan osa mallia. Sama ”90 päivää”, josta johtoryhmässä kerran sovittiin, on nyt kirjattu paikkaan, josta sekä ihminen että kone sen löytävät. Kuvausten kirjoittamisesta enemmän sivulla AI-valmis metadata.
Syitä on kaksi, vanha ja uusi. Vanha on se johtoryhmän kolme liikevaihtoa. Sitä on yritetty ratkaista 1990-luvulta asti, ja useimmissa organisaatioissa se on yhä ratkaisematta, koska raportteja syntyy nopeammin kuin määritelmistä ehditään sopia.
Uusi on tekoäly. Kielimalli ei tiedä, että teillä liikevaihdosta vähennetään hyvitykset tai että asiakas on aktiivinen vain, jos se on ostanut viimeisen 90 päivän aikana. Jos sen päästää suoraan raakatauluihin, se arvaa, ja arvaus näyttää täsmälleen yhtä varmalta kuin oikea vastaus. Ravintolavertauksessa raakatauluihin päästetty kielimalli on tarjoilija, joka lähetetään keittiöön tekemään annos itse: jotain syötävää syntyy, mutta reseptiä ei ole. Ruokalistan kanssa sama tarjoilija pärjää ensimmäisestä päivästä lähtien, kunhan listalla lukee muutakin kuin ”Annos 14”. Semanttinen kerros on se ruokalista. Agentti valitsee mittarin ja dimensiot, ja kerros laskee luvun.
Semanttinen mallinnus on työtä, jossa päätetään, mitä luvut tarkoittavat. Tekninen osuus on yllättävän helppo, koska Power BI Desktop, Tabular Editor ja dbt tekevät suurimman osan puolestasi. Vaikein osuus tapahtuu neuvotteluhuoneessa, kun myynti ja talous sopivat, mikä liikevaihto on. Kun se on sovittu, järjestys on aika suoraviivainen:
Semanttisen mallin laadun näkee nopeammin kuin luulisi. Avaa malli ja käy läpi viisi kysymystä: