En godt utformet datamodell i Power BI er grunnmuren for pålitelige, raske og brukervennlige rapporter. Den påvirker både ytelse, vedlikehold og hvordan sluttbrukere opplever dataene og rapportene. I denne artikkelen går vi gjennom hva som kjennetegner en god modell, hvilke prinsipper du bør følge og hvilke praktiske grep som gir mest effekt i Power BI.
Hvorfor er en god modell viktig?
En datamodell påvirker alt fra ytelse og datakvalitet til hvor lett rapportene er å vedlikeholde og bruke. Uten en gjennomtenkt modell vil selv de beste dashboards bli upålitelige eller trege.
Her er noen punkter du må tenke på for å få en god datamodell:
- Ytelse: Modellens struktur har stor innvirkning på spørringsytelsen. En stjernemodell med rene en-til-mange relasjoner gjør det enklere for Power BI motoren å filtrere og aggregere data effektivt. Dette reduserer kompleksiteten i spørringer og øker ytelsen. For brukeren betyr det raskere dashbord, kortere ventetid ved filtrering og generelt mer responsive rapporter. I tillegg utnytter en god modell Vertipaq motorens komprimering optimalt så ved å unngå unødvendige data (f.eks. ved å normalisere ut dimensjoner) øker komprimeringsgraden som gir raskere beregninger og lavere minneforbruk.
- Vedlikehold og pålitelighet: En ryddig modell er enklere å vedlikeholde og videreutvikle. Når tabeller og relasjoner er logiske og entydige blir feilsøking enklere og risikoen for feil mindre. For eksempel vil en modell der alle measures beregnes likt fra et tabell grunnlag gi mer pålitelige og nøyaktige resultater enn en modell full av spesialtilfeller. Enhver endring som å legge til et nytt felt eller en ny datakilde er lettere å gjennomføre uten å ødelegge eksisterende rapporter hvis modellen følger beste praksis. Det blir også enklere å teste og validere dataene når strukturen gir mening da du har tydelige skiller mellom dimensjon og fakta tabeller.
- Brukervennlighet og gjenbruk: Modellen påvirker hvordan analytikere og andre som skal bygge opplever å jobbe med dataene. En godt designet modell gjør det enklere å bygge interaktive rapporter, fordi de nødvendige feltene er tilgjengelige der man forventer dem og filtrering mellom tabeller “bare fungerer” takket være riktige relasjoner. Når tabeller og kolonner har forståelige navn og unødvendige felt er skjult blir det enklere for brukerne å finne frem. I tillegg legger en god modell til rette for gjenbruk da datasettet kan brukes som kilde for flere rapporter uten at hver rapport utvikler må gjøre egne tilpasninger. Brukerne får tillit til at tallene er riktige fordi modellen er konsistent og lett å validere og adopsjonen av BI løsningen blir bedre. Totalt sett gir en gjennomtenkt modell en bedre opplevelse for alle som jobber med rapportene fra utvikling til beslutningstaking.
Når modellen er god blir alt annet enklere og resultatet er raskere rapporter, færre feil og en løsning som tåler endringer over tid. Det er en investering som gir verdi både for utviklere og beslutningstakere.
Viktige prinsipper og anbefalinger
Det finnes ikke bare en riktig måte å modellere data på som alltid er rett, men det finnes en rekke etablerte prinsipper som gjør modellene bedre. Her er noen av de viktigste anbefalingene du bør følge når du bygger datamodeller i Power BI:
- Bruk stjernemodell (Star Schema): Organiser dataene i faktatabeller og dimensjonstabeller heller enn en større flat tabell. Stjerneskjema er den anbefalte modelleringsmetoden der en faktatabell knyttes til flere dimensjonstabeller. Denne strukturen er enklere, mer effektiv og optimerer spørringsytelsen i Power BI.
- En-til-mange relasjoner (unngå mange-til-mange): Definer relasjoner mellom tabellene med riktig kardinalitet. Faktatabellen bør ha mange-siden av relasjonen mot en-siden i hver dimensjonstabell. Unngå mange-til-mange relasjoner da de kan komplisere modellen og påvirke ytelsen negativt. Hvis mange-til-mange er noe du må ha så vurder å introdusere en bridge-table som en egen dimensjon for å håndtere koblingen i stedet.
- Enveis filtrering på relasjoner: Som standard bør filter flyten gå fra dimensjoner til fakta en vei. Unngå “bi directional” relasjoner med mindre det er absolutt nødvendig. Kryssfiltrering begge veier kan skape uventede resultater og til og med sirkulære referanser i modellen slik at Power BI ikke er sikker på hvilken filtreringsvei som er riktig. Ved spesielle behov kan man heller bruke measures som bruker CROSSFILTER funksjonen eller spesifikke relasjoner aktivert i enkelte measures fremfor å la alle relasjoner være bidireksjonale.
- Korrekte datatyper og nøkkelkolonner: Velg riktige datatyper for alle kolonner. Bruk helst tall for nøkler i stedet for tekst der det er mulig da dette kan redusere minnebruk og forbedre komprimering. Velg lavest nødvendige presisjon for numeriske verdier ved for eksempel å bruke heltall eller færre desimaler for måltall for å redusere datamodellens størrelse. Riktige datatyper satt i Power Query eller et view som man leser fra inn i Power BI sikrer også at aggregasjoner og sammenligninger utføres korrekt (dato som datotype, tall som talltype etc).
- Measures fremfor kalkulerte kolonner: Utfør beregninger med measures i stedet for kalkulerte kolonner der det lar seg gjøre. Measures beregnes dynamisk ut fra filtreringen og hvordan de brukes i Power BI og lagres ikke i modellen som gjør dem mer effektive. Kalkulerte kolonner beregnes derimot for hver rad under datainnlasting og lagres i modellen som vil øke modellstørrelsen og minnekravet og kan gi tregere oppdateringer etterhvert som en datamodell vokser.
- Minimer bruk av beregnede kolonner og tabeller: Unngå å gjøre tunge data transformasjoner i datamodellen ved hjelp av DAX. Kalkulerte kolonner og tabeller kan fort bli en flaskehals for presetasjon da de øker modellstørrelsen og beregnes på nytt ved hver refresh av datamodellen. I scenarioer der data må transformeres eller berikes er det ofte bedre å gjøre dette i Power Query eller enda bedre om dette kan gjøres tidligere i dataplattformen før dataene lastes inn i modellen
- Fjern unødvendige kolonner og rader: Hold modellen slank ved kun å inkludere data som faktisk trengs. Unødvendige kolonner som ikke brukes i visualiseringer eller beregninger bør fjernes, og irrelevante rader som f.eks historikk man ikke trenger bør filtreres bort før import. Jo mer data som lastes inn desto større vil modellen bli og ved å begrense datamengden reduseres kompleksiteten og man oppnår bedre ytelse uten å gå glipp av innsikten man gjør tilgjengelig.
- Bruk en egen dato tabell (kalender): For tids og dato analyser bør du opprette en dedikert dato dimensjon. Slå av den automatiske dato tabell funksjonen i Power BI Desktop, spesielt hvis du har flere datofelter. Den automatiske funksjonen lager skjulte dato tabeller for hver dato i modellen og vil bruke unødvendig minne. En egen kalender dimensjon som dekker hele dato perioden din gir deg fleksibilitet (tilpassede kalendere, finansår etc.) og konsistente dato filter forskjellige steder i en rapport. Husk å markere denne tabellen som en datokalendertabell i modellen ved å "Mark as date table" slik at innebygde tidsintelligensfunksjoner fungerer korrekt og bruker denne tabellen som utgangspunkt.
- Forstå dataens granularitet: Sørg for at faktatabeller lastes inn på et konsistent detaljnivå (granularitet). Hvis forskjellige rader representerer data på ulike aggregasjonsnivåer uten tydelig skille kan det skape forvirring i beregninger. Vurder om detaljeringsgraden er hensiktsmessig da for eksempel en transaksjonstabell kan inneholde alle salgstransaksjoner (høy granularitet) mens en oppsummert tabell per måned kan brukes som en aggregasjonstabell for ytelsesforbedring. Konsistens i granularitet gjør at measures gir riktige resultater og at filtrering fungerer mer forutsigbart når du filtrerer imellom dimensjonstabell og fakta tabell.
- Gi tabeller og kolonner forståelige navn:
Bruk forretningsvennlige og intuitive navn på tabeller og felt i stedet for tekniske eller kryptiske kildenavn som f.eks. tbl_Sales123.Amount_NOK. Enkle og tydelige navn gjør modellen lettere å forstå og bruke for både analytikere og beslutningstakere. Skjul tekniske kolonner som ID kolonner og interne nøkler som ikke er relevante for rapportbrukeren og legg gjerne til beskrivelser på felter som kan være tvetydige. Om du vil ta det et steg lengre så kan du organisere measures i mapper eller samle dem i en egen måltabell for enda bedre oversikt.
Ved å følge disse prinsippene bygger du en modell som er lett å forstå, lett å bruke og som skalerer godt når behovene endrer seg.
Praktiske tips i Power BI
Til slutt noen konkrete tips og anbefalinger du kan ta i bruk direkte i Power BI Desktop for å bygge og vedlikeholde en god datamodell. Dette er små grep som kan ha stor effekt på både ytelse, struktur og brukervennlighet.
- Deaktiver Auto Date/Time: Etter at du oppretter en ny Power BI-rapport, gå til File -> Options and settings -> Options -> Data Load og fjern haken for Auto date/time for både globale innstillinger og gjeldende fil. Dette forhindrer at Power BI automatisk genererer skjulte datokalendere for hver datokolonne og ved å slå av denne funksjonen unngår du unødvendig bloating av modellen og holder kontroll på kalender tabeller selv. Opprett i stedet en egen datokalendertabell som nevnt og marker den som datotabell under Table Tools fanen.
- Bruk modelldiagrammet aktivt: I Power BI Desktop sin Model visning kan du dra og organisere tabeller slik at strukturen blir tydelig. Dette gjør det lettere å se relasjonene og oppdage eventuelle feil og du kan kontrollere at alle relasjoner har riktig filtrering og riktig kardinalitet.
- Oppdater datatyper og formater: Etter import så husk å gå gjennom modellens felter og sjekke at datatypene er korrekte (dato felt er Dato, tall er desimal/heltall som passende, tekst er tekst etc.). Sett også fornuftig standardformat på measures slik du vil ha det når du bruker measures i visualiseringer. Typiske formater å sjekke er valutaformat på beløp, prosentformat på % measures, dato format på dato felter etc. Dette sparer tid senere når du lager visualiseringer og sikrer at summering og sortering fungerer uten ekstra tiltak. Husk at for tekstdimensjoner som måneder eller ukedager kan du angi “Sort by Column” for f.eks. månedsnavn etter månedsnummer for riktig rekkefølge i visualiseringer.
- Bruk Power Query for datarensing: For dataene kan du med fordel bruke Power Query eller et transformasjon lag til å forme og rense dataene. Fjern unødvendige kolonner, splitt kolonner, endre datatyper og andre transformasjoner du trenger. Power Query operasjoner skjer før dataene komprimeres inn i modellen og du drar nytte av "query folding” til kilden der det er mulig. Jo mer arbeid som gjøres før det kommer inn i Power Query jo mindre trenger modellen å tenke på og jobbe med når den lastes om. Et godt tips er å dokumentere Power Query trinnene med kommentarer slik at andre eller du selv senere forstår hva hver spørring og forandring gjør.
- Skjul ubrukte kolonner og tabeller: Etter at modellen er bygget så ta en runde og skjul det som ikke skal eksponeres til sluttbrukere som skal bygge rapporter. Typiske kandidater er ID felter, indekser, tekniske kolonner som bare brukes internt eller hele hjelpe tabeller som ikke skal brukes i visualiseringer. Høyreklikk på en kolonne eller tabell i feltlisten og velg Hide. Skjulte felt kan fortsatt brukes i tiltak og beregninger men de vil ikke vises for rapportbrukeren som forvirrende valg.
- Gi modellen et forretningsvennlig språk: Gi tabeller og kolonner som har kryptiske kildenavn mer lesbare navn. For eksempel så kan Dim_Date tabellen kalles Dato og Fact_Sales kan kalles Salg, og kolonnen CustomerID kan vises som Kunde ID eller ende enklere som bare Kunde. I Power BI Desktop kan du også legge til en beskrivelse på kolonner som forklarer innholdet og dette er spesielt nyttig i større modeller som mange skal bruke.
- Organiserte measures: Hvis du har mange measures kan det være lurt å organisere dem. Du kan lage Display Folders ved å gi et mappenavn på measures i model visningen og da grupperes de under en mappe. Alternativt kan du samle alle dine DAX measures som er en dedikert measures tabell. Dette gjør ikke noe forskjell ytelsesmessig men hjelper på oversikten når du har mange måltall.
- Overvåk modellstørrelse og ytelse: Bruk innebygde verktøy og eksterne verktøy for å holde modellen optimalisert. Performance Analyzer i Power BI Desktop under View fanen kan avsløre hvilke visualiseringer eller DAX spørringer som tar lang tid, noe som kan indikere enten et measure som må skrives om eller en kompleks modellkobling. For mer dyptgående analyse kan du benytte DAX Studio som er et eksternt verktøy til å kjøre spørringer eller VertiPaq Analyzer som for å se hvilke tabeller og kolonner som bruker mest minne. Disse verktøyene er mer avanserte, men de kan hjelpe deg med å finne tiltak som forbedrer ytelsen ytterligere.
- Test som en sluttbruker: Til slutt så husk å teste modellen din gjennom øynene til en sluttbruker. Jobb i Power BI Desktop og dra inn noen dimensjonsfelt som slicere og legg til et par visuals med measures og se om filtrering og beregning oppfører seg intuitivt og korrekt. Titt også på funksjonen View As under Modeling fanen og View as Roles hvis du har definert sikkerhetsroller for å verifisere at Row Level Security (RLS) fungerer som forventet. Denne testingen kan avdekke både logiske feil og brukeropplevelse punkter for forbedring.
Med disse prinsippene og tipsene i bagasjen er du bedre rustet til å lage Power BI datamodeller som ikke bare fungerer men som fungerer veldig bra. En god modell gir raskere rapporter, mer pålitelige analyser og en enklere hverdag for alle som skal jobbe med dataene videre fra utviklere til sluttbrukere.
En god datamodell er ikke bare en teknisk nødvendighet, men den er fundamentet for en vellykket Power BI satsing. Hvis du ønsker hjelp til å strukturere en datamodell, forbedre ytelsen eller sikre skalerbarhet for fremtidig vekst så ta gjerne kontakt for en prat om hvordan vi kan styrke datagrunnlaget i din virksomhet.