Naar inhoud
hulpbij
hulpbijpowerbi

DAX-foutmelding oplossen in Power BI (2026)

Los een DAX-fout in Power BI systematisch op. Herken syntaxis-, context-, datatype-, tabel- en relatieproblemen en kies de juiste foutdecoder.

Los een DAX-foutmelding op door eerst de volledige melding en het soort modelobject vast te leggen, daarna de formule tot het kleinste falende onderdeel terug te brengen en pas dan context, datatype, tabelvorm of relatie te herstellen. Voeg niet blind SUM, MAX, SELECTEDVALUE of FILTER toe, want een formule zonder fout kan nog steeds een onjuist antwoord geven.

Kies direct de juiste foutdecoder

Herken je een van deze meldingen, ga dan naar de specifieke uitleg:

  • “The syntax for … is incorrect”: de parser kan de formule niet lezen. Controleer haakjes, quotes, scheidingstekens en functienamen met de DAX-syntaxisdecoder.
  • “Column … cannot be found or may not be used in this expression”: DAX kan een modelobject niet binden of de functie verwacht een ander objecttype. Gebruik de ontbrekende-kolomdecoder.
  • “Cannot convert value … of type Text”: een getal, Boolean of vergelijking krijgt tekst. Ga naar de DAX-conversiefoutdecoder.
  • “A single value for column … cannot be determined”: een losse kolom levert in de filtercontext meer dan één mogelijke waarde op. Lees de single-value-decoder.
  • “A table of multiple values was supplied where a single value was expected”: een eenkolomstabel of lookup levert meerdere rijen op. Gebruik de multiple-values-decoder.
  • “Multiple columns cannot be converted to a scalar value”: een tabel met meerdere kolommen staat op een positie voor één waarde. Gebruik de multiple-columns-decoder.
  • “A True/False expression does not specify a column”: een CALCULATE-filter is geen geldige kolomgebonden of tabelvorm. Ga naar de True/False-filterdecoder.
  • “A circular dependency was detected”: twee of meer berekende objecten zijn direct of indirect van elkaar afhankelijk. Gebruik de circular-dependency-decoder.

Staat jouw tekst er niet tussen, volg dan het diagnosepad hieronder. De categorie van de fout is belangrijker dan willekeurig zoeken naar één functienaam.

Vier soorten problemen die op elkaar lijken

Microsoft onderscheidt in het DAX-overzicht syntactische fouten, semantische fouten en fouten die tijdens de berekening ontstaan. In de praktijk moet je ook een vierde categorie bewaken: een formule die zonder melding een verkeerd resultaat geeft.

1. Syntaxisfout

Power BI kan de grammatica niet verwerken. Voorbeelden zijn een ontbrekend haakje, een verkeerd teken of een onvolledige functieaanroep. De formule wordt niet opgeslagen.

2. Semantische fout

De formulevorm is leesbaar, maar een naam, argumenttype of object past niet. Een kolom bestaat bijvoorbeeld niet, een functie krijgt een tabel waar een scalar nodig is of een filterargument heeft de verkeerde vorm.

3. Evaluatie- of refreshfout

De formule is geldig voor sommige invoer, maar faalt bij een specifieke waarde of context. Denk aan ongeldige getaltekst, meerdere lookupresultaten of een probleem dat pas door nieuwe brondata zichtbaar wordt.

4. Onjuist resultaat zonder foutmelding

Een technisch geldige formule kan de verkeerde businessregel uitvoeren. MAX verwijdert bijvoorbeeld een single-value-fout, maar kiest misschien willekeurig de hoogste statuscode. Ook een ontbrekende relatie kan totalen opleveren die geloofwaardig ogen en toch fout zijn.

Stap voor stap een DAX-fout oplossen

1. Leg de fout vast voordat je iets wijzigt

Kopieer:

  • de volledige melding;
  • de volledige formule;
  • naam en type van het object;
  • de visual en filters waarbij het gebeurt;
  • één voorbeeld waarvoor je de juiste uitkomst kent;
  • of de fout in Desktop, Service of beide verschijnt.

Maak zo nodig een kopie van de measure. Verwijder geen werkende delen voordat je weet welk onderdeel faalt.

2. Bepaal de taal en het objecttype

Controleer eerst waar je werkt:

  • DAX-measure: retourneert één dynamische scalar per filtercontext;
  • standaard berekende kolom in een Import-model: berekent en bewaart één waarde per modelrij bij refresh; niet-gematerialiseerde berekende kolommen kunnen op querytijd worden berekend;
  • berekende tabel: retourneert een tabel bij modelrefresh;
  • RLS-regel: moet per rij een booleaanse uitkomst geven;
  • DAX-query: moet na EVALUATE een tabeluitdrukking uitvoeren;
  • Power Query: gebruikt M en heeft eigen stap- en celfouten.

Een measure moet uiteindelijk één scalar retourneren. Een tabeluitdrukking met meerdere rijen of kolommen moet je daarom eerst tot één scalar reduceren. Een M-fout herstel je niet met DAX-functies.

Vertaal functienamen uit een gevonden DAX-formule niet zelf, maar selecteer ze via IntelliSense. Power BI gebruikt standaard komma's als argumentscheiding; in de regionale instellingen kun je volgens Microsoft ook gelokaliseerde DAX-scheidingstekens inschakelen.

3. Classificeer het falende onderdeel

Markeer in de formule:

  • iedere kolom- en measurereferentie;
  • iedere functie die een tabel retourneert;
  • iedere plek waar één scalar vereist is;
  • iedere vergelijking tussen datatypen;
  • iedere contextwijziging met CALCULATE of CALCULATETABLE;
  • iedere relatie- of lookupfunctie;
  • iedere variabele en haar retourtype.

Lees de officiële functiepagina als je twijfelt. Een parameter met columnName verwacht een bestaande kolomreferentie, terwijl expression een berekening accepteert.

4. Breng de formule terug tot een geldige basis

Begin met de kleinste berekening die nog betekenis heeft:

Omzet test =
SUM(Sales[Bedrag])

Werkt die, voeg dan één variabele, filter of iterator per keer terug. Werkt de basis niet, controleer kolomnaam, datatype en model.

Vervang een complexe formule niet meteen door een compleet andere oplossing. Dan weet je niet welk onderdeel de oorspronkelijke fout veroorzaakte.

5. Gebruik VAR en RETURN als meetpunten

Variabelen maken tussenresultaten afzonderlijk testbaar:

Marge gecontroleerd =
VAR OmzetWaarde =
    [Omzet]
VAR KostenWaarde =
    [Kosten]
VAR MargeWaarde =
    OmzetWaarde - KostenWaarde
RETURN
    MargeWaarde

Laat RETURN tijdelijk OmzetWaarde, KostenWaarde en daarna MargeWaarde teruggeven. Microsoft adviseert deze aanpak in de best practice voor DAX-variabelen, omdat je zo een deel van de formule kunt onderzoeken zonder het te herschrijven.

Een measure kan geen volledige tabelvariabele tonen. Test binnen de measure het aantal rijen met COUNTROWS(TabelVariabele) of één bewuste waarde met een passende iterator. Wil je de tabelrijen inspecteren, voer dan dezelfde tabelexpressie tijdelijk na EVALUATE uit in een losse DAX-query. Houd er rekening mee dat DAX Query View grote queryresultaten kan afkappen.

6. Controleer vorm, datatype en context

Stel per onderdeel drie vragen:

  1. Retourneert dit een scalar of tabel?
  2. Welk datatype heeft de waarde?
  3. In welke rij- en filtercontext wordt dit geëvalueerd?

Test een measure in:

  • een kaart;
  • een tabel op de bedoelde detailkorrel;
  • een subtotaal;
  • het eindtotaal;
  • zonder selectie;
  • met één selectie;
  • met meerdere selecties.

Volgens Microsoft verandert een measure per visualcel doordat iedere combinatie van rijen, kolommen, slicers en filters een eigen context oplevert. Een verschil tussen kaart en tabel is daarom niet automatisch een bug.

7. Controleer model en refresh

Open de modelweergave en controleer:

  • actieve relaties;
  • cardinaliteit;
  • richting van filterdoorgifte;
  • unieke sleutels aan de one-kant;
  • gelijke datatypen van gekoppelde sleutels;
  • datumtabellen en datatypes;
  • recente hernoemingen of verwijderde kolommen.

De Microsoft-uitleg over modelrelaties in Power BI beschrijft hoe cardinaliteit en filterrichting bepalen welke rijen een berekening bereiken.

Vernieuw daarna het model en herhaal de test. In een klassiek Import-model worden standaard berekende kolommen en tabellen bij modelverwerking opnieuw berekend, terwijl een measure tijdens de query wordt geëvalueerd. Niet-gematerialiseerde berekende kolommen vormen hierop een uitzondering.

Gebruik DAX Query View voor gerichte tests

Met DAX Query View kun je een tabeluitdrukking tegen het geopende semantische model uitvoeren. Test enkele bestaande measures bijvoorbeeld als één resultaatrij:

EVALUATE
ROW(
    "Omzet", [Omzet],
    "Kosten", [Kosten],
    "Marge", [Marge]
)

Een virtuele tabel kun je rechtstreeks na EVALUATE bekijken:

EVALUATE
TOPN(
    20,
    FILTER(
        Sales,
        Sales[Bedrag] < 0
    ),
    Sales[Bedrag],
    ASC,
    Sales[OrderregelId],
    ASC
)
ORDER BY
    Sales[Bedrag] ASC,
    Sales[OrderregelId] ASC

Vervang OrderregelId door een werkelijk unieke sleutel uit jouw model. Volgens de TOPN-documentatie kan TOPN(20, ...) meer dan twintig rijen teruggeven wanneer rijen op positie 20 gelijk eindigen op alle opgegeven sorteersleutels. Een werkelijk unieke secundaire sleutel voorkomt zo'n tie en ORDER BY bepaalt de zichtbare volgorde.

Gebruik alleen niet-gevoelige testdata en beperk grote tabellen met TOPN. Een queryresultaat bewijst bovendien alleen wat er in die querycontext gebeurt. De filters van een rapportvisual kunnen anders zijn.

Gebruik Performance Analyzer bij een specifieke visual

Gaat één visual fout of duurt hij onverwacht lang, start dan Performance Analyzer in Power BI Desktop:

  1. start de opname;
  2. vernieuw de betreffende visual;
  3. open de meetgegevens van die visual;
  4. kopieer de DAX-query;
  5. voer de query uit in DAX Query View;
  6. wijzig één onderdeel per test.

Performance Analyzer toont onder meer de duur van de DAX-query en andere visualonderdelen. Het maakt een verkeerde formule niet automatisch correct, maar legt wel de werkelijke query en visualcontext bloot.

Als de fout alleen in Power BI Service verschijnt

Controleer achtereenvolgens:

  • of de laatste modelrefresh is geslaagd;
  • of nieuwe bronwaarden een conversie- of lookupfout veroorzaken;
  • of de Service dezelfde gegevensbron en gateway gebruikt;
  • of DirectQuery op de bron een ander resultaat geeft;
  • of de betrokken gebruiker andere RLS-filters heeft;
  • of Object-Level Security een tabel of kolom verbergt;
  • of de gepubliceerde versie gelijk is aan het geopende Desktop-bestand.

Test met dezelfde Viewer-rol. Volgens Microsoft geldt Object-Level Security niet voor workspacebeheerders, Members en Contributors, waardoor zij een probleem kunnen missen dat voor een Viewer wel optreedt.

Als de formule geldig is maar het antwoord niet klopt

Definieer eerst de verwachte businessuitkomst in gewone taal. Bijvoorbeeld: “tel orderregels na alle slicers, maar behoud de geselecteerde productgroep”. Schrijf daarna op welke filters moeten blijven, worden toegevoegd of worden verwijderd.

Vergelijk:

  1. een handmatig controleerbare detailset;
  2. de measure per sleutel;
  3. het subtotaal;
  4. het eindtotaal;
  5. dezelfde selectie zonder één slicer.

Een totaal hoeft geen optelsom van de zichtbare rijen te zijn: de measure wordt in de totaalcontext opnieuw geëvalueerd. Gebruik een iterator alleen als de businessregel werkelijk de rijresultaten moet sommeren.

Veelgemaakte fouten

  • De volledige formule tegelijk herschrijven. Je verliest de plek waar de fout begon.
  • Blind MAX of SELECTEDVALUE toevoegen. De melding verdwijnt mogelijk, maar de gekozen waarde heeft geen businessregel.
  • Een measure en berekende kolom verwisselen. Ze hebben een andere context en ander berekenmoment.
  • Alleen de kaartvisual testen. Detailrijen en totalen kunnen andere contexten hebben.
  • Power Query en DAX door elkaar halen. De talen hebben andere functies, typen en foutafhandeling.
  • Een relatieprobleem met een lookup omzeilen. Dat kan dubbele sleutels en een verkeerd model verbergen.
  • IFERROR gebruiken zonder de bronfout te onderzoeken. Ongeldige rijen verdwijnen dan mogelijk stil uit totalen.
  • Alleen als beheerder in Service testen. RLS en OLS kunnen voor een Viewer een ander resultaat geven.
  • Prestaties optimaliseren voordat de uitkomst klopt. Een snellere verkeerde berekening blijft verkeerd.

Zo voorkom je nieuwe DAX-fouten

Gebruik vaste modelnamen, expliciete datatypen en een stermodel met duidelijke relaties. Schrijf kolommen volledig gekwalificeerd, measures ongekwalificeerd en geef variabelen namen die hun betekenis of tabelvorm tonen.

Is de measure door Copilot of een andere AI voorgesteld, controleer dan eerst wat AI in Power BI wel en niet van je model kan overnemen.

Bouw een measure van binnen naar buiten en test iedere tussenstap op een kleine bekende gegevensset. Leg bij complexe measures vast welke filters ze horen te behouden. Bekijk voor meer handleidingen, foutdecoders en DAX-uitleg de Power BI-hub.

Wordt de herstelde measure onderdeel van een terugkerend rapport, leg dan ook bronversies, definities, totalen en goedkeuring vast met de controleerbare workflow voor AI-rapportages.

Officiële bronnen

Veelgestelde vragen

Wat is de eerste stap bij een DAX-foutmelding?
Noteer de volledige melding, het objecttype en de plek waar de fout verschijnt. Bepaal daarna of het om een measure, berekende kolom, berekende tabel, RLS-regel, DAX-query of Power Query-stap gaat voordat je de formule aanpast.
Waarom werkt mijn measure in een kaart maar niet goed in een tabel?
Een measure wordt opnieuw geëvalueerd binnen de filtercontext van iedere visualcel. Een kaart heeft meestal één totale context, terwijl een tabel per rij extra filters toevoegt. Test daarom detailrijen, subtotalen en het eindtotaal afzonderlijk.
Wat betekent de melding dat één waarde niet kan worden bepaald?
De kolom is gevonden, maar in de huidige context zijn meerdere waarden mogelijk waar één scalar nodig is. Kies een inhoudelijk juiste aggregatie, SELECTEDVALUE met bewust alternatief of herschrijf de berekening rond de gewenste korrel.
Moet ik DAX-functienamen of scheidingstekens vertalen?
Vertaal functienamen niet zelf, maar kies ze via IntelliSense, bijvoorbeeld SUM. Power BI gebruikt standaard komma's als argumentscheiding, maar je kunt gelokaliseerde DAX-scheidingstekens inschakelen. Controleer die instelling wanneer een gekopieerde formule een syntaxisfout geeft.
Hoe test ik een deel van een lange DAX-measure?
Zet tussenresultaten in VAR-variabelen en laat RETURN tijdelijk één variabele teruggeven. Een scalaire variabele kun je direct tonen; controleer een tabelvariabele met COUNTROWS of voer dezelfde tabelexpressie tijdelijk uit na EVALUATE in DAX Query View.
Wanneer gebruik ik DAX Query View of Performance Analyzer?
Gebruik DAX Query View om tabeluitdrukkingen en measures gericht tegen het model te testen. Gebruik Performance Analyzer wanneer een specifieke visual fout gaat of traag is en je de door die visual uitgevoerde DAX-query en timing wilt onderzoeken.
Waarom verschijnt een fout alleen in Power BI Service?
De Service kan andere rollen, Object-Level Security, bronreferenties, gatewayinstellingen, DirectQuery-resultaten of vernieuwde data gebruiken. Test met dezelfde gebruikersrol en filters en controleer de laatste geslaagde modelrefresh.

Lees ook

Hulp nodig bij jouw situatie?

Kom je er niet uit? Stuur kort wat context, wat je wilt bereiken en waar je vastloopt. Dan kijken we samen naar een passende volgende stap.