Wat is DAX in Power BI?
DAX (Data Analysis Expressions) is de formuletaal die Power BI, Excel Power Pivot en Analysis Services gebruiken om berekeningen te definiëren binnen een datamodel. Met DAX bouw je metingen (dynamische berekeningen zoals totalen en ratio's) en berekende kolommen, en stuur je context-afhankelijke logica aan zoals tijdsintelligentie en filtermanipulatie via functies zoals CALCULATE. DAX lijkt qua syntax op Excel-formules, maar rekent met tabellen en relaties in plaats van losse cellen.
DAX (Data Analysis Expressions) is de formuletaal waarmee je in Power BI berekeningen, metingen en aangepaste kolommen maakt binnen het datamodel.
DAX als de rekenmotor van Power BI
Waar Power Query de data ophaalt en opschoont, is DAX de taal waarmee je binnen het datamodel berekeningen definieert. Elke KPI die je in een Power BI-rapport ziet, zoals totale omzet, gemiddelde marge of groei ten opzichte van vorig jaar, is meestal het resultaat van een DAX-formule. DAX is ontworpen voor werken met tabellen en relaties, niet met losse cellen zoals in Excel, wat het krachtiger maakt voor grote, relationele datasets maar ook een andere denkwijze vraagt.
Metingen versus berekende kolommen
DAX kent twee hoofdvormen van berekeningen. Metingen (measures) worden dynamisch berekend op het moment dat een visual ze nodig heeft, rekening houdend met de actuele filters (bijvoorbeeld een geselecteerd jaar of een gefilterde regio). Ze nemen geen extra opslag in en zijn de standaardkeuze voor vrijwel elke KPI. Berekende kolommen worden daarentegen één keer per rij berekend tijdens het vernieuwen van de data en fysiek in het model opgeslagen; ze zijn nodig wanneer je een waarde wilt gebruiken om op te filteren, groeperen of sorteren, iets wat een meting niet kan.
Een veelgemaakte beginnersfout is het overmatig gebruiken van berekende kolommen waar een meting had volstaan, wat het model onnodig groter en trager maakt.
Filtercontext en rijcontext
Het lastigste, en krachtigste, concept in DAX is context. Rijcontext betekent dat een formule per rij wordt uitgevoerd (relevant bij berekende kolommen). Filtercontext betekent dat een meting wordt herberekend op basis van welke filters actief zijn: een slicer op jaar, een filter in een tabel, of de rij en kolom van een matrix. Dezelfde meting geeft dus een ander resultaat afhankelijk van waar hij in het rapport wordt gebruikt. Dit is wat Power BI-rapporten interactief en dynamisch maakt, maar het vraagt ook dat je als bouwer begrijpt hoe filters zich door het model heen bewegen.
De rol van CALCULATE
CALCULATE is de functie waarmee je de filtercontext van een berekening actief kunt aanpassen, en daarmee de belangrijkste functie in de hele taal. Met CALCULATE bouw je bijvoorbeeld tijdsintelligentie: omzet van hetzelfde kwartaal vorig jaar, een lopend totaal (year-to-date), of een percentage van het totaal ongeacht actieve filters. Vrijwel elke geavanceerde DAX-berekening is in de kern een variant op CALCULATE gecombineerd met filterfuncties zoals FILTER, ALL of SAMEPERIODLASTYEAR.
Best practices voor DAX in de praktijk
Houd metingen overzichtelijk in een aparte tabel zonder eigen data (“measure table”), gebruik consistente naamgeving, en bouw complexe metingen op uit kleinere, herbruikbare metingen in plaats van alles in één lange formule te proppen. Test nieuwe metingen altijd op een kleine, controleerbare dataset voordat je ze in een productierapport gebruikt, zodat je zeker weet dat de filtercontext doet wat je verwacht.
Meer weten over de bouwstenen vóór DAX? Lees wat is Power Query en, voor een diepere duik in de belangrijkste DAX-functie, de CALCULATE-functie in Power BI.
Onze tip: Begin met simpele metingen (SUM, COUNTROWS) en breid pas uit naar CALCULATE zodra je de basis onder de knie hebt. Probeer niet meteen complexe tijdsintelligentie te bouwen zonder eerst filtercontext te begrijpen.
Veelgestelde vragen
Is DAX hetzelfde als Excel-formules?
DAX lijkt qua syntax oppervlakkig op Excel: functies als SUM en IF bestaan in beide. Het fundamentele verschil is dat Excel-formules rekenen op individuele celwaarden, terwijl DAX rekent op kolommen en tabellen binnen een relationeel datamodel, met filtercontext die verandert afhankelijk van hoe een rapport is opgebouwd. Wie DAX leert vanuit een Excel-achtergrond moet vooral wennen aan het concept van filter- en rijcontext, dat in Excel niet bestaat.
Wat is het verschil tussen een meting en een berekende kolom in DAX?
Een meting (measure) wordt dynamisch berekend op het moment dat een rapport het opvraagt, op basis van de actuele filters en selecties, en neemt geen extra opslagruimte in beslag. Een berekende kolom wordt daarentegen één keer berekend tijdens het vernieuwen van de data en per rij fysiek opgeslagen in het model, wat geheugen kost. Voor de meeste rapportagelogica, zoals totalen, percentages en tijdsintelligentie, is een meting de juiste keuze; berekende kolommen zijn nodig als je een waarde per rij nodig hebt om op te filteren of te groeperen.
Wat doet de CALCULATE-functie in DAX?
CALCULATE is de belangrijkste functie in DAX omdat het de filtercontext van een berekening kan wijzigen. Met CALCULATE kun je bijvoorbeeld de omzet van vorig jaar berekenen terwijl het rapport gefilterd staat op dit jaar, of een totaal berekenen dat een specifiek filter negeert. Vrijwel alle geavanceerde DAX-patronen, zoals tijdsintelligentie en vergelijkingen tussen periodes, zijn in de kern een toepassing van CALCULATE.
Is DAX moeilijk te leren?
De basis van DAX (eenvoudige SUM- en COUNT-metingen) is snel te leren, vergelijkbaar met Excel-formules. De uitdaging zit in het begrijpen van filter- en rijcontext, wat nodig is zodra je iets complexer wilt berekenen dan een simpel totaal. Met oefening en een paar goed doordachte voorbeelden (zoals tijdsintelligentie-berekeningen) wordt dit concept helder, en dat is de sleutel tot productief DAX-gebruik.