Naar inhoud
hulpbij
hulpbijpowerbi

DAX-fout "The syntax for ... is incorrect" (2026)

Power BI kan je DAX-formule niet ontleden. Vind de eerste ongeldige constructie en herstel haakjes, scheidingstekens, aanhalingstekens of VAR.

Conceptpagina. Deze pagina wordt nog gecontroleerd. Daarom staat hij op noindex en blijft hij buiten de sitemap tot de inhoud publicatieklaar is.

De melding “The syntax for ... is incorrect” betekent dat Power BI je DAX-formule niet volgens de syntaxisregels kan lezen. Controleer eerst vlak vóór en rond het gemarkeerde onderdeel op een ontbrekend haakje, een verkeerd scheidingsteken, gekrulde aanhalingstekens of een onvolledige VAR-constructie.

Hoe ziet deze DAX-fout eruit?

Power BI onderstreept een deel van de formule rood en toont bijvoorbeeld:

The syntax for ')' is incorrect.

Tussen de aanhalingstekens kan ook een komma, variabelenaam of ander onderdeel staan. Controleer naast dat onderdeel ook de constructie direct ervoor. Een vergeten haakje op de vorige regel kan er bijvoorbeeld voor zorgen dat Power BI pas RETURN of een later token markeert.

Deze melding verschilt van “A single value for column cannot be determined”. Bij een syntaxisfout kan Power BI de formule nog niet uitvoeren. Bij een single-value-fout is de formule wel leesbaar, maar levert de actieve context niet de vereiste ene waarde op.

Stap voor stap de syntaxisfout oplossen

1. Begin bij het gemarkeerde onderdeel en lees terug

Zoek het rood onderstreepte token in de formulebalk. Controleer daarna niet alleen dat token, maar ook de vorige regel en de constructie waarin het staat. Let vooral op:

  • een openingshaakje zonder bijbehorend sluithaakje;
  • een tekstwaarde zonder afsluitend dubbel aanhalingsteken;
  • een komma of puntkomma die niet bij je ingestelde notatie past;
  • een tabelnaam met spaties zonder enkele aanhalingstekens;
  • een VAR zonder geldige afsluitende expressie.

Werk van binnen naar buiten. Controleer eerst de kleinste geneste functie en daarna de functie eromheen. Zo voorkom je dat je tegelijk op meerdere plekken wijzigingen doet en niet meer weet welke wijziging de fout oploste.

2. Maak de formule tijdelijk kleiner

Zet een kopie van de volledige formule in een tekstbestand voordat je gaat testen. Vervang daarna tijdelijk ingewikkelde delen door een eenvoudige constante of een bestaande measure. Een compacte testmeasure kan bijvoorbeeld zijn:

Syntaxis test = 1

Voeg de oorspronkelijke onderdelen één voor één terug. Zodra de fout opnieuw verschijnt, weet je in welk blok de ongeldige constructie zit. Deze aanpak werkt vooral goed bij lange formules met meerdere VAR-blokken, geneste IF-functies of uitgebreide CALCULATE-filters.

3. Gebruik de suggesties in de formulebalk

Typ tabel-, kolom-, measure- en functienamen opnieuw in plaats van ze blind uit een ander programma te plakken. De suggestielijst helpt je een bestaande naam te kiezen en verkleint de kans op een typefout. Houd er rekening mee dat automatisch aanvullen niet ieder sluithaakje voor je toevoegt.

Kopieer je een formule uit een e-mail, Word-bestand of webpagina, typ dan de aanhalingstekens opnieuw. Tekstverwerkers zetten rechte tekens soms om in typografische varianten die DAX niet als begrenzing van een tekstwaarde leest.

4. Controleer in welke editor je werkt

Een measure, berekende kolom en berekende tabel gebruiken DAX, maar verwachten niet altijd hetzelfde soort eindresultaat. Een modelberekening heeft de vorm Naam = expressie. Een volledige DAX-query gebruikt een andere invoervorm: EVALUATE is verplicht en DEFINE is optioneel. Zo'n queryscript kun je niet ongewijzigd als measure opslaan.

Power Query gebruikt zelfs een andere taal: M. Een constructie als each [Omzet] * 1.21 hoort in de Power Query-editor en niet in de DAX-formulebalk.

Twijfel je of een Excel-formule rechtstreeks kan worden overgenomen, lees dan eerst hoe je een Excel-formule naar DAX vertaalt. DAX werkt met tabellen, kolommen, filtercontext en rijcontext, niet met vaste celverwijzingen zoals B2:B100.

5. Herstel één oorzaak en test opnieuw

Pas steeds één logisch blok aan en bevestig de formule daarna. Verdwijnt de syntaxisfout, controleer dan ook of de uitkomst inhoudelijk klopt. Een formule die door de parser wordt geaccepteerd, kan nog steeds een verkeerde aggregatie of filterlogica bevatten.

Test een herstelde measure in een eenvoudige kaart en in een tabel met de relevante dimensie. Controleer ten minste een detailrij, een totaalrij en verschillende slicerselecties. Gebruik bij een volgende melding het overzicht met DAX-foutmeldingen om syntaxis-, context- en datatypeproblemen uit elkaar te houden.

Controle 1: een haakje ontbreekt

Geneste functies maken het gemakkelijk om een sluithaakje te vergeten. In deze formule wordt CALCULATE niet gesloten:

Omzet vorig jaar =
CALCULATE(
    [Omzet],
    SAMEPERIODLASTYEAR('Datum'[Datum])

De geldige versie heeft twee sluithaakjes: één voor SAMEPERIODLASTYEAR en één voor CALCULATE.

Omzet vorig jaar =
CALCULATE(
    [Omzet],
    SAMEPERIODLASTYEAR('Datum'[Datum])
)

Zet bij een lange formule iedere functie op een eigen regel en spring de argumenten consequent in. De vorm maakt dan zichtbaar welke haakjes bij elkaar horen. Controleer ook of er niet juist een extra sluithaakje staat.

Controle 2: komma en puntkomma zijn gemengd

DAX gebruikt standaard komma's als argumentscheidingsteken en punten als decimaalteken:

Omzet Nederland =
CALCULATE(
    [Omzet],
    Klant[Land] = "Nederland"
)

Power BI Desktop kan gelokaliseerde DAX-scheidingstekens gebruiken als je die keuze in de globale regionale opties hebt ingeschakeld. Dan volgen de tekens de regionale Windows-instelling en kan dezelfde formule puntkomma's vereisen:

Omzet Nederland =
CALCULATE(
    [Omzet];
    Klant[Land] = "Nederland"
)

Kijk naar een bestaande werkende formule in dezelfde gewone formulebalk om te zien welke notatie actief is. Vervang de scheidingstekens niet zonder ook decimalen te controleren. De officiële pagina over ondersteunde talen en DAX-scheidingstekens beschrijft waar je deze globale instelling vindt.

De editor kan een uitzondering vormen. Microsoft schrijft in de invoer voor RLS-rollen en -regels komma's tussen functieargumenten voor, ook wanneer je gewone formulebalk gelokaliseerde puntkomma's gebruikt.

Controle 3: verkeerde aanhalingstekens

Tekstwaarden in DAX staan tussen rechte dubbele aanhalingstekens. Deze gekrulde tekens zijn ongeldig:

Segmentlabel =
IF(
    SELECTEDVALUE(Klant[Segment]) = “Zakelijk”,
    "B2B",
    "Overig"
)

Typ de tekstbegrenzers opnieuw in Power BI:

Segmentlabel =
IF(
    SELECTEDVALUE(Klant[Segment]) = "Zakelijk",
    "B2B",
    "Overig"
)

Dubbele aanhalingstekens begrenzen tekstwaarden. Enkele aanhalingstekens gebruik je voor tabelnamen wanneer dat nodig is. Verwissel die twee rollen niet.

Controle 4: een tabel- of kolomnaam is verkeerd begrensd

Een tabelnaam met een spatie moet tussen enkele aanhalingstekens staan. Dit is fout:

Totale omzet = SUM(Verkoop regels[Omzet])

Dit is geldig:

Totale omzet = SUM('Verkoop regels'[Omzet])

Schrijf een kolom bij voorkeur als Tabel[Kolom] en een measure als [Measurenaam]. Bestaat een naam niet, dan kan Power BI na de syntaxiscontrole ook een aparte naam- of verwijzingsfout tonen. Kies namen via de suggestielijst om verschillen in spaties en leestekens te voorkomen.

Volgens de officiële DAX-syntaxisreferentie vereisen tabelnamen met spaties, speciale tekens of bepaalde gereserveerde woorden enkele aanhalingstekens. Een apostrof in de tabelnaam zelf schrijf je dubbel.

Controle 5: een Excel-functienaam is in DAX geplakt

DAX en Excel delen concepten, maar de formule is niet altijd letterlijk uitwisselbaar. Gebruik de canonieke naam uit de DAX-referentie. Deze Nederlandse Excel-functienaam wordt niet als alias voor SUM herkend:

Totale omzet = SOM(Verkoop[Omzet])

Gebruik de DAX-functienaam:

Totale omzet = SUM(Verkoop[Omzet])

Controleer niet alleen de naam. De argumenten en het verwachte resultaat kunnen eveneens verschillen. Een onbekende functienaam kan ook een aparte naamfout geven in plaats van exact deze syntaxisfout. Gebruik de DAX-functiereferentie van Microsoft om de juiste functie en syntaxis te bevestigen.

Controle 6: VAR en RETURN vormen geen complete expressie

Variabelen maken een lange measure leesbaar, maar iedere declaratie moet compleet zijn. Na de variabelen moet een eindexpressie volgen. Deze formule mist RETURN met de uiteindelijke berekening:

Margepercentage =
VAR OmzetWaarde = [Omzet]
VAR KostenWaarde = [Kosten]

Een geldige versie is:

Margepercentage =
VAR OmzetWaarde = [Omzet]
VAR KostenWaarde = [Kosten]
RETURN
    DIVIDE(OmzetWaarde - KostenWaarde, OmzetWaarde)

Een variabelenaam mag niet tussen aanhalingstekens of blokhaken staan, geen spaties bevatten en niet met een cijfer beginnen. Controleer bij een fout op RETURN eerst of alle variabele-expressies erboven geldige haakjes en scheidingstekens hebben. De VAR-documentatie geeft de formele schrijfwijze en naamregels.

Controle 7: een DAX-query is als measure ingevoerd

Een query uit DAX Query View kan bijvoorbeeld zo beginnen:

EVALUATE
    'Verkoop'

EVALUATE hoort bij een DAX-query en niet bij de definitie van een modelmeasure. Een measure gebruikt een naam, een gelijkteken en een scalaire expressie, bijvoorbeeld:

Totale omzet = SUM(Verkoop[Omzet])

Omgekeerd is alleen die measuredefinitie geen complete query. In DAX Query View is EVALUATE vereist en kun je eventueel eerst objecten met DEFINE vastleggen.

Dat verschil is ook belangrijk voor variabelen. Een lokale VAR in een measure heeft een afsluitende RETURN nodig. Een queryvariabele in een DEFINE VAR-blok volgt de querysyntaxis en vormt daarop een uitzondering.

Controle 8: Power Query M is als DAX ingevoerd

Deze Power Query-constructie hoort niet in een DAX-measure:

Table.AddColumn(Bron, "Omzet incl. btw", each [Omzet] * 1.21)

Voer M-code in de Power Query-editor uit. Maak je de berekening in het datamodel, schrijf dan een passende DAX-measure of berekende kolom. Maak je deze berekende kolom in de tabel Verkoop, dan kan dat bijvoorbeeld zo:

Omzet incl. btw = Verkoop[Omzet] * 1.21

De keuze tussen Power Query en DAX gaat verder dan syntaxis. Power Query verandert gegevens tijdens de voorbereiding; een DAX-measure wordt bij gebruik in het rapport binnen de actuele filtercontext berekend.

Veelgemaakte fouten

  • Alleen het gemarkeerde woord vervangen. De eerste echte fout kan een regel eerder staan. Lees vanaf het gemarkeerde onderdeel terug tot het begin van de functie.
  • Alle komma's blind door puntkomma's vervangen. Controleer eerst of gelokaliseerde DAX-scheidingstekens actief zijn en let ook op decimalen.
  • Code uit een opgemaakt document plakken. Gekrulde aanhalingstekens en verborgen tekens kunnen een verder correcte formule onleesbaar maken.
  • Meer dan één reparatie tegelijk uitvoeren. Je ziet dan niet welke wijziging de syntaxis herstelde en kunt ongemerkt de betekenis veranderen.
  • Een kolomnaam als tekst schrijven. "Verkoop[Omzet]" is een tekstwaarde. Een kolomverwijzing staat niet tussen dubbele aanhalingstekens.
  • Een DAX-query als measure plakken. DEFINE en EVALUATE horen bij een query en niet bij de gewone measuredefinitie.
  • DAX en Power Query M mengen. Controleer in welke editor en taal je werkt voordat je een gevonden codevoorbeeld overneemt.
  • Stoppen zodra de rode fout verdwijnt. Test daarna de uitkomst, filters en totalen. Geldige syntaxis garandeert geen juiste berekening.

Zo voorkom je nieuwe DAX-syntaxisfouten

Gebruik consequente opmaak: één functieargument per regel, vier spaties inspringing en een lege regel tussen variabelen en RETURN wanneer de formule lang wordt. Geef variabelen beschrijvende namen zonder spaties. Kies tabel- en kolomnamen vanuit de suggestielijst en bouw een ingewikkelde measure in kleine, afzonderlijk testbare delen.

Bewaar een werkende tussenversie voordat je een groot blok wijzigt. Vergelijk na een fout de laatste werkende en eerste foutieve versie. Zo zoek je in één kleine wijziging in plaats van in de volledige measure.

Lees voor de onderliggende regels het officiële DAX-overzicht van Microsoft. Voor andere foutdecoders, modeluitleg en praktische stappen ga je terug naar de Power BI-hub.

Veelgestelde vragen

Wat betekent 'The syntax for ... is incorrect' in Power BI?
Power BI kan de DAX-formule niet volgens de grammaticaregels ontleden. Controleer vlak voor en rond het gemarkeerde onderdeel op een ontbrekend haakje, een verkeerd scheidingsteken, ongeldige aanhalingstekens of een onvolledige VAR-constructie.
Waarom wijst Power BI een ander woord aan dan waar mijn fout staat?
De parser markeert vaak het punt waar de formule niet meer geldig kan worden gelezen. De werkelijke oorzaak kan eerder staan, bijvoorbeeld een ontbrekend sluithaakje of aanhalingsteken. Controleer daarom ook de vorige regel en de direct omliggende expressie.
Moet ik in DAX een komma of puntkomma gebruiken?
Standaard gebruikt DAX komma's voor functieargumenten en punten als decimaalteken. Als gelokaliseerde DAX-scheidingstekens in de globale opties van Power BI Desktop zijn ingeschakeld, volgen de tekens de regionale Windows-instelling. Meng beide notaties niet in één formule.
Kan ik Nederlandse Excel-functienamen in DAX gebruiken?
Gebruik de canonieke functienaam uit de DAX-referentie, zoals SUM, IF en CALCULATE. Een Nederlandse Excel-naam zoals SOM wordt niet als alias voor SUM herkend. Vertaal dus de bedoeling van de Excel-formule en controleer iedere functie in de DAX-documentatie.
Waarom krijg ik een syntaxisfout bij VAR en RETURN?
Iedere lokale VAR heeft een geldige naam, een gelijkteken en een expressie nodig. In een measure of andere lokale expressie volgt na de variabelen RETURN met de eindexpressie. Controleer ook of alle haakjes binnen de variabele-expressies gesloten zijn.
Kan ik Power Query-code in de DAX-formulebalk plakken?
Nee. Power Query gebruikt de taal M en modelberekeningen gebruiken DAX. Functies zoals Table.AddColumn en de constructie each horen in de Power Query-editor en vormen geen geldige DAX-measure of berekende kolom.
Kan ik een script uit DAX Query View als measure plakken?
Niet ongewijzigd. Een DAX-query vereist EVALUATE en kan met DEFINE beginnen, terwijl een modelmeasure de vorm Naam = expressie heeft en één scalaire uitkomst moet geven. Neem alleen de bruikbare expressie over en pas die aan de measurecontext aan.

Lees ook

Hulp nodig bij jouw situatie?

Kom je er niet uit? Stuur kort wat context, wat je wilt bereiken en waar je vastloopt. Vraag een offerte aan als je wilt dat ik het voor je oplos.

w.bouwmeester@bouwmeesterconsultancy.nl · +31 6 28963636