← Terug naar Downloads DataPartner365 — datapartner365.nl
DataPartner365 · Handleiding · 2026

Power BI Dashboards Bouwen

Van workspace setup tot gepubliceerd dashboard: een praktische handleiding voor het bouwen van professionele Power BI rapporten met DAX, Power Query en Row Level Security.

Power BI DAX Power Query Microsoft Gratis
1

Workspace setup & licenties

Free vs Pro vs Premium, Power BI Desktop downloaden

Power BI bestaat uit twee onderdelen: Power BI Desktop (gratis, voor ontwikkeling) en de Power BI Service (cloud, voor publiceren en delen).

LicentieKostenDelenGebruik
FreeGratisAlleen met jezelfPersoonlijk gebruik, leren
Pro~€9/gebruiker/maandMet Pro gebruikersTeams, zakelijk gebruik
Premium Per User~€18/gebruiker/maandMet gratis gebruikersGrote organisaties
Premium CapacityVanaf ~€4.000/maandIedereen in orgEnterprise, embedded

Power BI Desktop installeren

  • Download via Microsoft Store (automatische updates) of de Power BI website
  • Vereisten: Windows 10/11, 64-bit, minimaal 2 GB RAM (8 GB aanbevolen)
  • Aanmelden met je Microsoft 365 of werk account

Workspace aanmaken in de Service

  1. Ga naar app.powerbi.com en log in
  2. Klik op WerkruimtenWerkruimte maken
  3. Geef de workspace een naam (bijv. "Sales Analytics")
  4. Voeg collega's toe als Lid, Inzender of Beheerder
Maak aparte workspaces aan voor Ontwikkeling, Test en Productie. Gebruik de Deployment Pipeline functie (Premium) voor geautomatiseerde promotie.
2

Data importeren met Power Query

M language, transformaties, query folding

Power Query (ook wel de M engine) is de ETL laag van Power BI. Je gebruikt het om data te importeren, transformeren en combineren voordat het in het datamodel komt.

Data bronnen verbinden

Ga naar Start → Gegevens ophalen en kies je bron. Power BI ondersteunt 100+ connectoren: SQL Server, Azure, SharePoint, Excel, REST API's, en meer.

M code — praktische voorbeelden

m language — basisquery
let // Stap 1: verbinding maken met SQL Server Bron = Sql.Database("server.database.windows.net", "AdventureWorks"), // Stap 2: tabel selecteren dbo_Sales = Bron{[Schema="dbo", Item="Sales"]}[Data], // Stap 3: kolommen filteren Gefilterd = Table.SelectColumns(dbo_Sales, {"OrderID", "OrderDate", "Amount", "CustomerID"}), // Stap 4: rijen filteren (query folding!) Actief = Table.SelectRows(Gefilterd, each [OrderDate] >= #date(2024, 1, 1)), // Stap 5: datumkolom omzetten naar datum type TypeKorrect = Table.TransformColumnTypes(Actief, {{"OrderDate", type date}, {"Amount", type number}}) in TypeKorrect
m language — datum dimensie aanmaken
let StartDatum = #date(2020, 1, 1), EindDatum = Date.From(DateTime.LocalNow()), AantalDagen = Duration.Days(EindDatum - StartDatum) + 1, DatumLijst = List.Dates(StartDatum, AantalDagen, #duration(1, 0, 0, 0)), DatumTabel = Table.FromList(DatumLijst, Splitter.SplitByNothing(), type table [Datum = date]), Verrijkt = Table.AddColumn(DatumTabel, "Jaar", each Date.Year([Datum]), Int32.Type), MetKwartaal = Table.AddColumn(Verrijkt, "Kwartaal", each "Q" & Text.From(Date.QuarterOfYear([Datum])), type text), MetMaand = Table.AddColumn(MetKwartaal, "Maand", each Date.Month([Datum]), Int32.Type), MetMaandNaam = Table.AddColumn(MetMaand, "MaandNaam", each Date.MonthName([Datum], "nl-NL"), type text) in MetMaandNaam
⚠️ Query Folding: Zorg dat transformaties worden 'gevouwen' naar de bron (SQL). Voeg filters toe vóór je kolommen toevoegt of berekeningen doet. Controleer via rechtermuisklik → "Query vouwdiagram bekijken".
3

Data model bouwen

Ster-schema, relaties, cardinaliteit, verborgen kolommen

Een goed datamodel is het fundament van een snel en correct Power BI rapport. Gebruik altijd een ster-schema: één feitentabel in het midden, omringd door dimensietabellen.

Ster-schema principes

  • Feitentabel: meetbare feiten (omzet, aantallen), minimale kolommen, veel rijen
  • Dimensietabellen: beschrijvende attributen (klant, product, datum), weinig rijen
  • Relaties: altijd veel-op-één (*, 1), van feit naar dimensie
  • Surrogate keys: integer sleutels, geen business keys in relaties

Relaties instellen

  1. Ga naar de Modelweergave (derde icoon linkerzijbalk)
  2. Sleep een kolom van de feitentabel naar de dimensietabel om een relatie te maken
  3. Stel de kardinaliteit in: Veel op één (*:1)
  4. Richting kruisfilter: Enkel (van dimensie naar feit)
DoDon't
Ster-schema met aparte datumtabelPlatte tabel met alle kolommen samen
Integer surrogate keysTekst als join-kolom
Eén actieve relatie per tabelpaarBidirectionele filters standaard
Datumtabel gemarkeerd als datumtabelDatum uit feitentabel gebruiken
Markeer je datumtabel als "Datumtabel" (rechtermuisklik → Als datumtabel markeren). Dit activeert time intelligence functies in DAX zoals TOTALYTD, DATEADD en SAMEPERIODLASTYEAR.
4

DAX formules schrijven

CALCULATE, SUMX, RELATED, DATEADD, time intelligence

DAX (Data Analysis Expressions) is de formuletaal van Power BI. Het werkt met tabellen en kolomcontext — fundamenteel anders dan Excel formules.

Basismetingen

dax — basis metingen
-- Eenvoudige aggregatie Totale Omzet = SUM(fct_Orders[Amount]) -- Aantal unieke klanten Unieke Klanten = DISTINCTCOUNT(fct_Orders[CustomerID]) -- Gemiddelde orderwaarde Gem. Orderwaarde = DIVIDE([Totale Omzet], COUNTROWS(fct_Orders))

CALCULATE — de krachtigste DAX functie

dax — calculate voorbeelden
-- Omzet alleen voor categorie "Electronics" Omzet Electronics = CALCULATE( SUM(fct_Orders[Amount]), dim_Product[Category] = "Electronics" ) -- Omzet vorig jaar (time intelligence) Omzet Vorig Jaar = CALCULATE( [Totale Omzet], DATEADD(dim_Datum[Datum], -1, YEAR) ) -- Jaar-op-jaar groei % YoY Groei % = DIVIDE( [Totale Omzet] - [Omzet Vorig Jaar], [Omzet Vorig Jaar] ) -- Cumulatief jaar tot datum Omzet YTD = TOTALYTD([Totale Omzet], dim_Datum[Datum])

SUMX en iteratorfuncties

dax — sumx en related
-- SUMX: bereken per rij en sommeer Omzet Excl. BTW = SUMX( fct_Orders, fct_Orders[Amount] * (1 - fct_Orders[BTW_Rate]) ) -- RELATED: waarde ophalen uit gerelateerde tabel Omzet Premium Klanten = CALCULATE( SUMX( fct_Orders, fct_Orders[Amount] ), RELATED(dim_Customers[Segment]) = "Premium" ) -- Moving average 3 maanden Omzet 3M MA = AVERAGEX( DATESINPERIOD( dim_Datum[Datum], LASTDATE(dim_Datum[Datum]), -3, MONTH ), [Totale Omzet] )
ℹ️ Gebruik altijd metingen in plaats van berekende kolommen voor aggregaties. Metingen worden berekend in de filtercontext van de visual, berekende kolommen worden bij vernieuwen berekend en opgeslagen in het model.
5

Visualisaties & dashboard design

Best practices, kleurgebruik, interactie, slicers

Een goed dashboard communiceert snel en duidelijk. Design is geen bijzaak — het bepaalt of gebruikers het rapport begrijpen en vertrouwen.

Visualisatie kiezen

DoelVisualWanneer
VergelijkenStaafdiagram (horizontaal)Categorieën vergelijken
Trend over tijdLijndiagramTijdreeksen
AandeelRingdiagram (donut)Max 5 categorieën
KPIKaartvisual of KPI-visualEnkelvoudige meting
GeografischKaart (ArcGIS/Bing Maps)Regionale analyses
DetailTabelvisual of MatrixDrilldown data

Design best practices

  • F-patroon: Belangrijkste KPI's linksboven, detail rechtsonder
  • Consistent kleurpalet: Maximaal 4-5 kleuren, één accentkleur voor data
  • Witruimte: Geef visuals ademruimte, gebruik padding en marges
  • Labels: Voeg databelabels toe alleen als ze waarde toevoegen
  • Slicers: Verticale slicers voor weinig opties, dropdown voor meer dan 5
  • Mobiel layout: Maak een aparte mobiele weergave via Weergave → Mobiele indeling
Gebruik bladwijzers voor navigatie tussen rapportpagina's en knoppen met acties voor een app-achtige gebruikerservaring. Zo maak je professionele interactieve rapporten zonder premium functies.
6

Row Level Security (RLS)

Rollen aanmaken, DAX filterregels, testen

Met RLS zorg je dat gebruikers alleen de data zien die ze mogen zien. Elke gebruiker gebruikt hetzelfde rapport, maar ziet gefilterde data op basis van hun identiteit.

Statische RLS (vaste rollen)

dax — rls filterregel
-- Rol: Nederland medewerker -- DAX filter op dim_Regio tabel: [Land] = "Nederland" -- Rol: Manager (ziet alles) -- Geen filter — laat dit veld leeg

Dynamische RLS (op basis van ingelogde gebruiker)

dax — dynamische rls
-- Filter op dim_Medewerkers tabel: -- Toont alleen data waar het e-mailadres overeenkomt [Email] = USERPRINCIPALNAME() -- Of via een mapping tabel (aanbevolen voor complexe structuren): -- dim_Medewerkers[Email] = USERPRINCIPALNAME() -- Gerelateerde tabellen filteren automatisch mee

RLS instellen in Power BI Desktop

  1. Ga naar Modellering → Rollen beheren
  2. Klik Maken en geef de rol een naam
  3. Selecteer de tabel en voer de DAX filterexpressie in
  4. Klik Als rol weergeven om te testen
  5. Na publicatie: wijs gebruikers en groepen toe aan rollen in de Service
⚠️ Let op: RLS werkt niet voor rapportbeheerders en werkruimte-beheerders in de Service — zij zien altijd alle data. Gebruik aparte werkruimten als beheerders ook gefilterd moeten zien.
7

Performance optimalisatie

DirectQuery vs Import, aggregaties, DAX Studio

Trage rapporten frustreren gebruikers. Met de juiste aanpak laad een dashboard in seconden, ook bij miljoenen rijen data.

Import vs DirectQuery kiezen

ModusVoordeelNadeelWanneer
ImportSnel, volledige DAX ondersteuningData niet real-time, geheugen limietStandaard keuze
DirectQueryReal-time, geen geheugen limietTrager, beperkte DAXGrote live datasets
DualFlexibel (import + DQ)Complex te beherenHybride scenario's

DAX optimalisatie tips

  • Gebruik variabelen (VAR) om herhaalde berekeningen te cachen
  • Vermijd FILTER(ALL(Tabel), ...) — gebruik KEEPFILTERS of directe kolomfilters
  • Gebruik DIVIDE() in plaats van / voor deling-door-nul beveiliging
  • Vermijd iteratoren (SUMX) op grote tabellen zonder noodzaak
dax — variabelen gebruiken
-- Slecht: OmzetVorig twee keer berekend Groei Slecht = DIVIDE( [Totale Omzet] - CALCULATE([Totale Omzet], DATEADD(dim_Datum[Datum], -1, YEAR)), CALCULATE([Totale Omzet], DATEADD(dim_Datum[Datum], -1, YEAR)) ) -- Goed: VAR vermijdt herhaalde berekening Groei Goed = VAR HuidigJaar = [Totale Omzet] VAR VorigJaar = CALCULATE([Totale Omzet], DATEADD(dim_Datum[Datum], -1, YEAR)) RETURN DIVIDE(HuidigJaar - VorigJaar, VorigJaar)
ℹ️ Gebruik DAX Studio (gratis, daxstudio.org) en Tabular Editor voor geavanceerde performance analyse. De ingebouwde Performance Analyzer (Weergave → Performance Analyzer) toont welke visuals het langzaamst zijn.
8

Publiceren & delen

Workspace publiceren, apps, embedding, planning vernieuwen

Na het bouwen publiceer je het rapport naar de Power BI Service voor geautomatiseerde vernieuwen en eenvoudig delen met collega's.

Publiceren vanuit Desktop

  1. Klik op Start → Publiceren
  2. Selecteer de doelwerkruimte
  3. Wacht op "Gepubliceerd naar Power BI" bevestiging
  4. Klik de link om het rapport in de browser te openen

Geautomatiseerd vernieuwen instellen

  1. Ga in de Service naar de dataset instellingen
  2. Vouw Gegevensbronreferenties uit en configureer de verbinding
  3. Activeer Gepland vernieuwen — kies tijdstip en frequentie
  4. Voeg een e-mailadres toe voor foutmeldingen

Een App publiceren

Apps zijn de aanbevolen manier om rapporten met eindgebruikers te delen.

  1. Ga naar de werkruimte → klik App publiceren
  2. Voeg navigatie-items toe (rapporten en dashboards)
  3. Stel toegang in: specifieke gebruikers, beveiligingsgroepen of de hele organisatie
  4. Eindgebruikers installeren de app via Apps → Apps ophalen
Embedding: Embed Power BI rapporten in SharePoint Online via het Power BI webonderdeel, of in je eigen applicatie via de Power BI Embedded API (vereist Premium capaciteit of A-SKU).
9

Checklist

Controleer voor publicatie naar productie
Data Model
  • Ster-schema geïmplementeerd (geen platte tabellen)
  • Datumtabel aanwezig en gemarkeerd als datumtabel
  • Alle relaties zijn actief en in juiste richting
  • Onnodige kolommen verborgen of verwijderd
DAX & Metingen
  • Metingen in een aparte maattabel geplaatst
  • DIVIDE() gebruikt voor alle delingen
  • Time intelligence metingen getest
  • Geen berekende kolommen voor aggregaties
Design & UX
  • Consistent kleurpalet en lettertype
  • Slicers duidelijk gelabeld met instructie
  • Mobiele indeling aangemaakt
  • Laadtijd < 3 seconden voor alle pagina's
Beveiliging & Publicatie
  • Row Level Security getest met testgebruikers
  • Geplande vernieuwing geconfigureerd en getest
  • Toegangsrechten workspace correct ingesteld
  • App gepubliceerd en gebruikers geïnformeerd