Direct antwoord

Optimaliseer je Power BI-datamodel door een star schema te hanteren, onnodige kolommen te verwijderen, cardinaliteit te verlagen, en DAX-measures te vereenvoudigen. Vermijd calculated columns waar measures volstaan, gebruik Import-modus in plaats van DirectQuery waar mogelijk, en test de laadtijd met DAX Studio of Performance Analyzer.

Waarom performance ertoe doet bij extern delen

Wanneer je een rapport deelt met een klant of partner, is de eerste indruk cruciaal. Een dashboard dat 8 seconden laadt communiceert iets heel anders dan eentje dat binnen 2 seconden klaarstaat. De gebruiker hoeft niet te weten waarom het traag is — het gevoel is: dit is niet professioneel.

Power BI-rapporten die intern prima werken, kunnen bij embedding via Shareboard BI trager aanvoelen omdat de gebruiker geen context heeft. Intern klik je door terwijl je wacht; een externe klant twijfelt of er iets mis is.

Stap 1: hanteer een star schema

Het meest impactvolle wat je kunt doen voor performance is je datamodel herstructureren naar een star schema:

  • Eén feitentabel (feit = transacties, metingen, events) in het midden
  • Dimensietabellen eromheen (klant, product, datum, locatie)
  • Relaties lopen altijd van dimensie naar feit (één-op-veel)

Vermijd sneeuwvlokschema’s (dimensies die naar andere dimensies verwijzen) en brede, platte tabellen. Power BI’s Vertipaq-engine is specifiek geoptimaliseerd voor star schema’s.

Concreet voorbeeld

In plaats van één tabel met 40 kolommen:

OrderIDKlantnaamKlantStadKlantLandProductCategorieOmzetDatum

Splits je naar:

  • feit_orders: OrderID, KlantKey, ProductKey, DatumKey, Omzet
  • dim_klant: KlantKey, Klantnaam, Stad, Land
  • dim_product: ProductKey, Product, Categorie
  • dim_datum: DatumKey, Datum, Maand, Kwartaal, Jaar

Stap 2: verwijder onnodige kolommen

Elke kolom in je model kost geheugen en vertraagt het laden. Loop je tabellen door en stel per kolom de vraag: wordt deze kolom gebruikt in een visual, filter, slicer of berekening?

Kolommen die je vaak veilig kunt verwijderen:

  • Technische ID’s die nergens in visuals voorkomen
  • Beschrijvingsvelden met lange teksten die je niet toont
  • Dubbele datumkolommen (als je een aparte datumtabel hebt)
  • Audit-kolommen zoals created_at, modified_by die niet in rapporten verschijnen

In Power Query (Transform Data) selecteer je de kolommen die je wél nodig hebt en verwijder je de rest met “Remove Other Columns”.

Stap 3: optimaliseer DAX-measures

Complexe DAX-berekeningen kunnen de laadtijd per visual flink vertragen. Een paar vuistregels:

Vermijd iteratorfuncties waar aggregaten volstaan

Langzaam:

Omzet Klant = SUMX(feit_orders, feit_orders[Aantal] * feit_orders[Prijs])

Sneller (als je een Omzet-kolom hebt):

Omzet Klant = SUM(feit_orders[Omzet])

Gebruik variabelen

Variabelen voorkomen dat dezelfde berekening meerdere keren wordt uitgevoerd:

Winstmarge =
VAR _omzet = SUM(feit_orders[Omzet])
VAR _kosten = SUM(feit_orders[Kosten])
RETURN
    DIVIDE(_omzet - _kosten, _omzet, 0)

Beperk het gebruik van CALCULATE met complexe filters

Elke CALCULATE met meerdere filterargumenten creëert een nieuwe filtercontext. Hoe meer nesting, hoe zwaarder de query. Vereenvoudig waar mogelijk.

Stap 4: kies Import boven DirectQuery

Import-modus laadt data in het geheugen van de Power BI-engine. Queries worden beantwoord vanuit dit gecachte model — extreem snel.

DirectQuery stuurt elke visuele interactie als query naar de brondatabase. Dit is nuttig als je real-time data nodig hebt, maar het is aanzienlijk trager en afhankelijk van de bronprestaties.

Voor extern gedeelde rapporten via Shareboard BI adviseren wij Import-modus met een goed ingesteld verversingsschema. De data is dan maximaal zo oud als je verversingsinterval (bijv. elke 30 minuten), maar het rapport laadt een veelvoud sneller.

Stap 5: test en meet

Performance Analyzer (ingebouwd)

  1. Open je rapport in Power BI Desktop
  2. Ga naar ViewPerformance Analyzer
  3. Klik op Start recording
  4. Interacteer met het rapport (filters, slicers, paginawissels)
  5. Bekijk per visual de opgesplitste tijden

Richtlijnen:

  • DAX-query < 500 ms per visual is goed
  • > 2 seconden per visual wijst op een optimalisatiekans

DAX Studio (geavanceerd)

DAX Studio is een gratis externe tool waarmee je individuele queries kunt analyseren, server timings kunt inzien en het geheugengebruik per kolom kunt bekijken. Ideaal om te achterhalen welke kolom het meeste geheugen verbruikt.

Checklist voor een snel rapport

  • Star schema met gescheiden dimensie- en feitentabellen
  • Ongebruikte kolommen verwijderd in Power Query
  • Calculated columns vervangen door measures waar mogelijk
  • DAX-measures gebruiken variabelen en vermijden onnodige iterators
  • Import-modus met scheduled refresh
  • Getest met Performance Analyzer — geen visual boven 2 seconden
  • Rapport gepubliceerd en gecontroleerd via Shareboard BI op laadtijd

Een snel rapport is geen luxe — het is de basis van een professionele klantervaring. Meer weten over het delen van rapporten met externen? Lees onze complete gids of neem contact op.

Veelgestelde vragen

Hoe meet ik de laadtijd van mijn rapport?

Gebruik de ingebouwde Performance Analyzer in Power BI Desktop (tabblad View → Performance Analyzer). Start een opname, ververs de visuals en bekijk per visual hoelang de DAX-query, rendering en overige verwerking duurde. Voor diepere analyses gebruik je DAX Studio.

Wat is het verschil tussen Import en DirectQuery voor performance?

In Import-modus wordt data vooraf geladen in het geheugen, wat veel snellere queries oplevert. DirectQuery bevraagt de brondata bij elke interactie, wat trager is maar altijd actuele data toont. Voor extern gedeelde rapporten via Shareboard BI is Import-modus vrijwel altijd de betere keuze.

Hoeveel kolommen mag mijn datamodel maximaal bevatten?

Er is geen hard maximum, maar hoe minder kolommen, hoe sneller het model. Verwijder kolommen die niet in visuals, filters of berekeningen worden gebruikt. Een model met 50 kolommen presteert aanzienlijk beter dan eentje met 200 kolommen bij dezelfde rijenaantallen.

Zijn calculated columns slecht voor performance?

Calculated columns vergroten het datamodel permanent omdat ze voor elke rij een waarde opslaan. Als je dezelfde logica kunt schrijven als een measure (die pas bij query-tijd wordt berekend), is dat vrijwel altijd efficiënter. Gebruik calculated columns alleen als je erop moet filteren of sorteren.

Maakt het uit voor externe gebruikers in Shareboard BI?

Ja, zeker. Externe gebruikers die via Shareboard BI een rapport openen verwachten een vlotte ervaring. Een rapport dat langer dan 3 seconden laadt voelt traag. Alle optimalisaties die je in Power BI Desktop doorvoert, werken direct door naar de embedded weergave in Shareboard BI.