EN

Hoeveel, hoe vaak, of hoeveel verschillende: welke DAX-basismaat past bij welke vraag?

🎯 Beginner⏱ 15 minuten

Wat je in deze les leert

Bijna elk Power BI-rapport begint met drie vragen: hoeveel is het totaal, hoe vaak is iets gebeurd, en om hoeveel verschillende dingen ging het. Die drie vragen hebben elk een bijpassende DAX-basismaat, en als je weet welke vraag je eigenlijk stelt, valt de keuze vanzelf op zijn plek.

Stel: je werkt met één Orders-tabel met drie kolommen, KlantID, OrderID en Bedrag. Je stakeholder komt langs met drie vragen die op het eerste gezicht op elkaar lijken. Zet ze naast elkaar, en het blijken drie compleet andere sommen, waarbij de measure vanzelf volgt zodra de vraag scherp staat.

Hoeveel: SUM

“Hoeveel omzet hebben we gedraaid?” is een vraag over één numerieke kolom: wat staat er in totaal in? Dat is precies wat SUM doet.

Total Omzet = SUM(Orders[Bedrag])

SUM telt alle getallen in de opgegeven kolom binnen de huidige filtercontext. Wil je vóór het optellen eerst iets per rij uitrekenen, zoals Aantal keer Prijs, dan gebruik je SUMX: die itereert rij voor rij en aggregeert daarna. Voor “wat is het totaal van één bestaande kolom” is SUM de kortste en meest leesbare route.

Hoe vaak: COUNTROWS

“Hoe vaak is er besteld?” is een vraag over rijen: elke rij in Orders staat voor één bestelling, dus tel je de rijen van de tabel.

Aantal Orders = COUNTROWS(Orders)

COUNTROWS telt het aantal rijen van een tabel of tabelexpressie binnen de huidige filtercontext. Beginners grijpen hier makkelijk naar COUNT, maar COUNT werkt op een kolom en slaat lege waarden stilletjes over. Is één cel in de Bedrag-kolom leeg, dan telt COUNT(Orders[Bedrag]) er één te weinig, terwijl COUNTROWS de rijen zelf telt en betrouwbaar blijft. Die nuance klinkt klein, maar in een rapport met gefilterde tabellen kan één lege cel een vertekend getal geven op precies de plek waar iemand een beslissing op baseert.

Hoeveel verschillende: DISTINCTCOUNT

“Om hoeveel verschillende klanten ging het?” is de vraag die de meeste rapportvergissingen veroorzaakt, en die gaat over unieke waarden in een kolom.

Unieke Klanten = DISTINCTCOUNT(Orders[KlantID])

DISTINCTCOUNT telt het aantal unieke waarden in de opgegeven kolom binnen de huidige filtercontext. Twee nuances om alvast te kennen. Ten eerste telt DISTINCTCOUNT een lege waarde mee als één unieke waarde: wil je die blank er expliciet niet bij, dan gebruik je DISTINCTCOUNTNOBLANK. Ten tweede is DISTINCTCOUNT semantisch gelijk aan COUNTROWS(DISTINCT(Orders[KlantID])): beide geven hetzelfde resultaat op dezelfde data, maar DISTINCTCOUNT is de kortere schrijfwijze voor precies dit geval. De langere COUNTROWS(DISTINCT(…))-vorm kom je vaker tegen zodra je complexere expressies bouwt waarbij je eerst wilt filteren en daarna tellen.

Zie het gebeuren in de tabel

Hieronder staat zo’n Orders-tabel, klein genoeg om zelf na te tellen. Klik een measure aan en kijk welke cellen meedoen. Er zit bewust één lege KlantID en één leeg Bedrag in: zo zie je de twee nuances van hierboven gebeuren in plaats van ze te onthouden. Zet daarna de slicer op een regio en kijk hoe elk getal meebeweegt.

Probeer het live

KlantIDOrderIDRegioBedrag
K1O-1001Noord120
K2O-1002Zuid80
K1O-1003Noord200
K3O-1004Zuid
K2O-1005Noord150
O-1006Zuid60
K4O-1007Noord90
K1O-1008Zuid45

Filtercontext verbindt ze alle drie

Alle drie deze measures luisteren naar filtercontext: ze berekenen hun resultaat binnen de filters die op dat moment actief zijn. Zet je “Unieke Klanten” naast een landfilter, dan telt DISTINCTCOUNT de klanten binnen dat land, en dezelfde measure geeft in een andere visual een ander getal. Datzelfde geldt voor SUM op Bedrag naast een maandfilter, of COUNTROWS op Orders naast een regiofilter.

Dat is precies waarom de keuze tussen SUM, COUNTROWS en DISTINCTCOUNT niet alleen een syntaxkwestie is, maar een vraagkwestie. De filtercontext bepaalt elke keer opnieuw welk getal je ziet, en alleen de juiste measure geeft dan de juiste waarde voor de juiste vraag. Dag 5 van de DAX basis-serie gaat hier uitgebreider op in.

De mentale check

Voelt je measure raar aan, herformuleer dan eerst de vraag die eronder ligt. Hoeveel, hoe vaak, of hoeveel verschillende? Die drie vraagwoorden lossen negen van de tien twijfels op voordat je ook maar één regel DAX schrijft.

Checkvraag

Je stakeholder vraagt “om hoeveel verschillende klanten ging het dit kwartaal?” Welke measure past?

Probeer dit zelf

Open een bestaand rapport, kies drie visuals, en formuleer voor elke visual de vraag in eigen woorden, zonder DAX erbij. Klopt het vraagwoord met de measure, dan zit je goed. Klopt het niet, dan heb je een signaal dat de measure herzien kan worden, en soms dat de vraag zelf nog scherper gesteld mag worden.

📌
Onthoud dit

Hoeveel is SUM, hoe vaak is COUNTROWS, hoeveel verschillende is DISTINCTCOUNT. Stel eerst de vraag scherp, dan volgt de measure vanzelf.

De Microsoft Learn-pagina’s voor SUM, COUNTROWS en DISTINCTCOUNT zijn de primaire bronnen als je de exacte functiedefinitie wilt nalezen.

Wil je de DAX basis-serie samen doorlopen? Op trainerbjorn.nl vind je het volledige leerpad.

TrainerBjörn is onderdeel van DoGoDa, Doing Good with Data. Gemaakt door Björn, met hulp van AI. Disclaimers.