Mijn notitiesPraktische Power BI tips
DIVIDE in DAX: de nettere deling voor je Power BI measures

Voor een percentage tik je snel Verkoop / Doel en je bent klaar. Die deling werkt de meeste dagen, en dat is precies waarom je er pas aan twijfelt als het mis gaat: ∞ in een kaart, NaN in een matrix, een rapport dat vragen oproept in plaats van beantwoordt. DIVIDE biedt een nettere manier om diezelfde deling te schrijven, met minder uitzonderingen om zelf op te vangen.
Dit is deel 4 van de DAX basis-serie op trainerbjorn.nl. Deel 3 ging over SUM, COUNTROWS en DISTINCTCOUNT. Deel 5, direct hierna, gaat over filtercontext.
Wat DIVIDE doet
DIVIDE heeft dezelfde uitkomst als de deeloperator /, met één verschil in gedrag: als de noemer nul of leeg is, geeft DIVIDE BLANK terug in plaats van Infinity of NaN.
De signatuur is DIVIDE(teller, noemer), met een optioneel derde argument voor een alternatieve uitkomst als de noemer leeg is. Dat derde argument is een bewuste keuze en niet de standaard.
Concreet: DIVIDE([Verkoop], [Doel]) geeft hetzelfde percentage als [Verkoop] / [Doel] zolang er een doel is. Is er geen doel, dan geeft DIVIDE netjes BLANK, en de visual laat die cel leeg. De reguliere / geeft in die situatie Infinity of NaN, en die waarden lekken vervolgens ongewijzigd door in visuals, kaarten en verdere berekeningen.
Waarom dat in een presentatie uitmaakt
BLANK gedraagt zich in Power BI anders dan nul. Een measure die BLANK teruggeeft voor een rij, verdwijnt automatisch uit een tabel of matrix: visuals verbergen BLANK-rijen standaard, zonder dat je daar extra instellingen voor nodig hebt. Dat betekent dat een product zonder doelstelling er gewoon niet tussen staat, precies zoals je het wilt in een rapport dat mensen elke ochtend openen zonder uitleg erbij.
Een percentage-kaart die op een slechte dag ∞ toont, trekt alle aandacht naar die uitzondering, niet naar het cijfer dat mensen willen zien. Met DIVIDE staat er een getal of staat er niets, en beide zijn correcte uitkomsten. In een rapport dat mensen elke dag raadplegen, is het verschil merkbaar: ze vertrouwen wat er staat, of ze beginnen te twijfelen aan het rapport zelf.
Hoe je de argumentvolgorde onthoudt
De enige drempel bij DIVIDE is weten wat teller en noemer zijn in de signatuur. Het ezelsbruggetje: teller staat boven in een breuk, dus teller staat vooraan in DIVIDE. DIVIDE([Verkoop], [Doel]) schrijf je precies zoals je de breuk zou opschrijven, teller boven, noemer onder, van boven naar beneden lezen.
Eén keer bewust intikken terwijl je die beeldspraak voor ogen hebt, en je vergeet het niet meer, precies zoals je het op de basisschool leerde opschrijven.
Het derde argument: voor als je toch een getal wilt tonen
DIVIDE heeft een optioneel derde argument, alternateresult, waarmee je in plaats van BLANK een vaste waarde kunt teruggeven als de noemer leeg is. Dat is zinvol als een KPI-kaart altijd een getal moet tonen, ook bij ontbrekende data, bijvoorbeeld wanneer een executive een dashboard heeft dat altijd iets moet laten zien.
Gebruik het derde argument niet als standaard. In een tabel of matrix wil je BLANK-rijen verbergen, niet opvullen met 0. De default BLANK is voor de meeste percentages en ratios de nettere keuze, juist omdat de visual die rijen dan vanzelf weglaat.
Waar een lege noemer vandaan komt
Een lege noemer voelt alsof er iets stuk is in de data, maar in de praktijk komt hij bijna altijd uit de filtercontext van de visual: een periode zonder omzet, een segment zonder klanten, een slicer-stand die op dit moment nul rijen oplevert. Dat is een geldige uitkomst, geen fout. De filtercontext van de visual bepaalt welke rijen de measure ziet, en als er geen rijen zijn voor een combinatie, is een lege noemer precies het verwachte resultaat.
Meer hierover in deel 5, dat gaat over filtercontext: hoe een visual bepaalt welke rijen hij ziet, en waarom de lege cel in je measure bijna nooit een datafout aangeeft.
De vuistregel
Elke deling in een measure gaat standaard door DIVIDE, tenzij je een expliciete reden hebt om / te gebruiken. De extra tekens zijn het waard: een measure die rustig reageert op een lege noemer, is een measure die je niet hoeft te verdedigen bij je stakeholders.
Wil je de DAX basis-serie samen doorlopen, of heb je een vraag over een specifieke measure in jouw rapport? Kijk op trainerbjorn.nl of neem contact op.