Naar inhoud
hulpbij
hulpbijpowerbi

DAX-fout "A single value for column" oplossen (2026)

Power BI ziet meerdere kolomwaarden waar DAX één waarde nodig heeft. Los de fout op met SUM, MAX, SELECTEDVALUE of de juiste rijcontext.

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

Deze foutmelding betekent dat je DAX-formule meerdere mogelijke kolomwaarden ziet terwijl er één waarde nodig is. Meestal los je dit op door bewust te kiezen voor een aggregatie zoals SUM of MAX, voor SELECTEDVALUE bij één selectie, of voor de juiste rijcontext in een berekende kolom.

Hoe ziet de foutmelding eruit?

Power BI markeert je formule rood en toont bijvoorbeeld:

A single value for column 'Land' in table 'Verkoop' cannot be determined.

De kolom- en tabelnaam verschillen per model, maar de oorzaak blijft hetzelfde. De expressie moet op die plek één scalar opleveren. De fout ontstaat wanneer DAX de kolomverwijzing niet tot precies één waarde kan herleiden, bijvoorbeeld omdat meerdere onderscheidende waarden zichtbaar zijn en geen rijcontext een huidige rij aanwijst.

Dat gedrag is juist. Als Power BI zonder waarschuwing de eerste waarde zou nemen, kan je rapport een geloofwaardig maar onjuist resultaat tonen. De fout dwingt je om de gewenste rekenregel expliciet te maken.

Kies eerst welke uitkomst je bedoelt

Zet niet automatisch MAX om de kolom heen alleen omdat de fout dan verdwijnt. Bepaal eerst wat de measure inhoudelijk moet teruggeven.

  • Een bedrag over alle zichtbare rijen: gebruik SUM(Verkoop[Omzet]).
  • De laatste zichtbare datum: gebruik MAX(Verkoop[Orderdatum]).
  • Een label als precies één land is gekozen: gebruik SELECTEDVALUE(Verkoop[Land]).
  • Een duidelijke tekst bij meerdere selecties: gebruik SELECTEDVALUE(Verkoop[Land], "Meerdere landen").
  • Een waarde uit een gerelateerde tabel per rij: gebruik RELATED(Product[Categorie]) in een berekende kolom.
  • Ander gedrag voor detailniveau en totaal: controleer het visualniveau met ISINSCOPE. Gebruik HASONEVALUE als precies één waarde de businessregel is.

De juiste oplossing volgt dus uit de vraag achter je berekening. Op de pagina over Excel-formules naar DAX vertalen lees je waarom DAX niet met vaste celbereiken werkt, maar steeds binnen de actieve context rekent.

Stap voor stap de single-value-fout oplossen

1. Controleer of je een measure of berekende kolom maakt

Een berekende kolom wordt rij voor rij geëvalueerd en heeft daarbij rijcontext. In een Import-model worden de resultaten bij gegevensverversing berekend en opgeslagen; in DirectQuery kan de evaluatie anders verlopen. Een measure wordt op aanvraag in filtercontext berekend. Die context ontstaat onder meer uit rapport-, pagina- en visualfilters, slicers, groeperingen en filters die via modelrelaties doorwerken.

Staat je formule in een measure en verwijs je rechtstreeks naar Verkoop[Land] of Verkoop[Omzet], dan ziet DAX vaak meerdere mogelijke waarden. Dat is het eerste wat je controleert.

2. Zoek de losse kolomverwijzing

Open de measure in de formulebalk en zoek naar de kolom die in de melding staat. Een foutgevoelige measure ziet er bijvoorbeeld zo uit:

Gekozen land = Verkoop[Land]

Een kaart op een ongefilterde rapportpagina bevat meerdere landen. De measure moet één tekstwaarde teruggeven, maar Verkoop[Land] levert er meerdere. Daardoor stopt DAX.

3. Tel tijdelijk hoeveel waarden zichtbaar zijn

Maak tijdens het zoeken een tijdelijke controlemeasure:

Aantal zichtbare landen =
COUNTROWS(VALUES(Verkoop[Land]))

Zet deze measure naast je foutgevende visual. Zie je een waarde groter dan 1, dan is meteen duidelijk waarom een directe kolomverwijzing niet werkt. Test ook de totaalrij en verander de slicers. Juist daar wijkt de context vaak af van de detailrij waarop je formule toevallig wel goed leek te gaan.

4. Kies de oplossing die bij je bedoeling past

Gebruik een aggregatie als je alle zichtbare rijen wilt samenvatten. Gebruik SELECTEDVALUE als één geselecteerde waarde betekenis heeft. Werk je per rij in een berekende kolom en komt de waarde uit een andere tabel, controleer dan de relatie en gebruik waar passend RELATED.

5. Test detail, totaal en meerdere selecties

Controleer de uitkomst niet alleen in één kaart. Voeg de measure ook toe aan een tabel met bijvoorbeeld land en klant. Test daarna:

  1. zonder slicerselectie;
  2. met precies één waarde geselecteerd;
  3. met meerdere waarden geselecteerd;
  4. op een detailrij;
  5. op de totaalrij.

Een oplossing is pas goed als elke relevante context een bewuste uitkomst geeft.

Oplossing 1: aggregeren met SUM, MIN of MAX

Stel dat je een measure voor omzet maakt:

Omzet = Verkoop[Omzet]

De kolom bevat een bedrag per verkoopregel. Een visual kan tientallen of duizenden regels tegelijk bevatten. Als je totale omzet wilt, schrijf je:

Omzet = SUM(Verkoop[Omzet])

Voor een datum kan MAX logisch zijn als je de laatste zichtbare orderdatum bedoelt:

Laatste orderdatum = MAX(Verkoop[Orderdatum])

MIN en MAX zijn niet alleen technische manieren om één waarde af te dwingen. Hun betekenis moet passen bij het rapport. MAX(Klant[Naam]) verbergt bijvoorbeeld dat meerdere klanten zichtbaar zijn en toont alfabetisch één naam. Dat is meestal misleidend.

Oplossing 2: één selectie opvragen met SELECTEDVALUE

Voor een dynamische titel of kaart wil je soms de gekozen categorie tonen. Dit is de foutgevoelige variant:

Rapportland = Verkoop[Land]

Gebruik dan:

Rapportland =
SELECTEDVALUE(
    Verkoop[Land],
    "Meerdere landen"
)

Bij precies één zichtbaar land geeft de measure dat land terug. Bij nul of meerdere landen verschijnt de alternatieve tekst. Laat je het tweede argument weg, dan retourneert SELECTEDVALUE in die situaties BLANK().

Microsoft adviseert SELECTEDVALUE voor dit patroon, omdat de functie compact controleert of er precies één onderscheidende waarde zichtbaar is. De oudere combinatie van HASONEVALUE en VALUES blijft nuttig wanneer je uitgebreider gedrag nodig hebt. Zie de officiële uitleg over SELECTEDVALUE in DAX.

Oplossing 3: afwijkend gedrag met HASONEVALUE

Soms wil je niet alleen een alternatieve tekst tonen, maar een andere berekening uitvoeren. Dan kun je eerst testen of er één waarde zichtbaar is:

Landstatus =
IF(
    HASONEVALUE(Verkoop[Land]),
    SELECTEDVALUE(Verkoop[Land]),
    "Selecteer één land"
)

HASONEVALUE controleert of de huidige filtercontext precies één onderscheidende waarde bevat. De functie herkent niet rechtstreeks of Power BI een detailrij of totaalrij evalueert. Gebruik ISINSCOPE(Verkoop[Land]) wanneer je formule moet afhangen van het huidige niveau in de visual. Leg in beide gevallen vast waarom het afwijkende gedrag nodig is.

De measurevoorbeelden hierboven werken ook in DirectQuery. SELECTEDVALUE, HASONEVALUE, VALUES en ISINSCOPE zijn in DirectQuery echter niet ondersteund in berekende kolommen of regels voor beveiliging op rijniveau.

Oplossing 4: RELATED gebruiken in een berekende kolom

Stel dat iedere verkoopregel een ProductId bevat en je vanuit de tabel Product de categorie wilt toevoegen. In een berekende kolom van Verkoop gebruik je bij een geldige veel-op-één-relatie:

Productcategorie = RELATED(Product[Categorie])

Deze losse formule hoort in een berekende kolom. In een measure kan RELATED alleen worden gebruikt binnen een iterator die rijcontext maakt, zoals SUMX of FILTER.

RELATED gebruikt de huidige rij en de modelrelatie om één corresponderende waarde op te halen. Werkt dit niet, controleer dan in de modelweergave:

  • of de relatie actief is;
  • of beide sleutelkolommen hetzelfde datatype hebben;
  • of de tabel aan de één-kant echt unieke sleutels bevat;
  • of een samengesteld model geen beperkte relatie gebruikt waar RELATED niet overheen kan;
  • of je de berekening als kolom en niet per ongeluk als measure hebt gemaakt.

Een extra functie om een fout model heen bouwen is zelden de beste oplossing. Een duidelijke sterstructuur maakt DAX korter en voorkomt veel contextfouten.

Waarom de fout alleen in een totaalrij kan verschijnen

In een tabelvisual kan de groepering iedere detailrij tot één land filteren. SELECTEDVALUE(Verkoop[Land]) geeft daar dat land terug. De standaardtotaalrij evalueert de measure opnieuw zonder de groeperingsfilter van de detailrij. Blijven meerdere onderscheidende landen over, dan geeft SELECTEDVALUE de alternatieve uitkomst of BLANK() terug. Blijft precies één land over, dan retourneert de functie gewoon dat land.

Dat verschil is geen bug in Power BI. Het is het gevolg van de filtercontext. Volgens de DAX-uitleg van Microsoft veranderen measures mee met filters en de context van de visual. Test daarom altijd de totaalrij en kies bewust of je daar een totaal, een leeg resultaat of een uitlegtekst wilt tonen.

Veelgemaakte fouten

  • Blind MAX toevoegen. De fout verdwijnt, maar je toont mogelijk een willekeurige hoogste datum, code of alfabetische tekst in plaats van de bedoelde uitkomst.
  • Een measure verwarren met een berekende kolom. Een measure heeft geen automatische huidige rij. Controleer het pictogram en de plek waar je de formule hebt aangemaakt.
  • Alleen de detailrij testen. De standaardtotaalrij wordt in een andere, doorgaans bredere filtercontext geëvalueerd en kan daardoor meerdere waarden bevatten.
  • Een alternatieve SELECTEDVALUE-uitkomst vergeten. Een lege kaart lijkt dan op ontbrekende data, terwijl er in werkelijkheid meerdere waarden geselecteerd zijn.
  • De relatie negeren. Een ontbrekende, inactieve of verkeerd ingerichte relatie kan voorkomen dat DAX één corresponderende waarde vindt.
  • Een waarde optellen die niet optelbaar is. Codes, percentages en voorraden vragen vaak om een andere aggregatie dan SUM.
  • Komma en puntkomma door elkaar gebruiken. DAX gebruikt standaard komma's als argumentscheidingsteken en punten als decimaalteken. Alleen als je in de globale regionale opties voor gelokaliseerde DAX-scheidingstekens kiest, volgt Power BI Desktop de Windows-landinstelling.

Zo voorkom je deze DAX-fout

Geef measures een naam die de aggregatie of bedoeling duidelijk maakt, zoals Totale omzet, Laatste orderdatum of Geselecteerd land. Schrijf bij een dynamisch label vooraf op wat er bij nul, één en meerdere selecties moet gebeuren. Controleer daarnaast de kardinaliteit van relaties en houd dimensietabellen uniek aan de één-kant.

Gebruik tijdens het bouwen een kleine controletabel in je rapport. Voeg daarin de relevante dimensies, je nieuwe measure en eventueel COUNTROWS(VALUES(...)) toe. Zo zie je snel binnen welke context de formule meer dan één waarde ontvangt.

Loop je daarna tegen een andere melding aan, gebruik dan het overzicht met DAX-foutmeldingen. Ga voor de opbouw van je model en de volgende Power BI-handleidingen terug naar de Power BI-hub. Werk je vooral vanuit spreadsheets, vergelijk dan ook hoe Excel-formules in Google Sheets omgaan met functies en regionale instellingen.

Veelgestelde vragen

Wat betekent 'A single value for column cannot be determined' in Power BI?
Power BI ziet in de huidige context meer dan één mogelijke waarde voor de genoemde kolom, terwijl je DAX-expressie één scalar nodig heeft. Je moet aangeven hoe Power BI die waarden moet samenvatten of welke enkele selectie geldig is.
Moet ik altijd SUM gebruiken om deze DAX-fout op te lossen?
Nee. Gebruik SUM alleen als je getallen echt wilt optellen. Voor één geselecteerde categorie past SELECTEDVALUE beter, voor een uiterste datum kan MAX logisch zijn en in een berekende kolom kan RELATED de juiste waarde uit een gekoppelde tabel ophalen.
Waarom werkt dezelfde kolom in een berekende kolom wel en in een measure niet?
Een berekende kolom heeft voor iedere berekening een huidige rij. Een measure wordt binnen filtercontext berekend en kan daardoor meerdere onderscheidende waarden tegelijk zien. Daarom heeft een measure meestal een aggregatie of selectiecontrole nodig.
Wat geeft SELECTEDVALUE terug bij meerdere selecties?
Zonder tweede argument geeft SELECTEDVALUE dan BLANK terug. Met een tweede argument bepaal je zelf de uitkomst, bijvoorbeeld 'Meerdere landen'. Dat maakt een kaart of titel duidelijker voor de gebruiker.
Kan een ontbrekende relatie deze fout veroorzaken?
Indirect wel. Een ontbrekende of verkeerde relatie kan zorgen dat de verwachte filter niet doorwerkt, waardoor meerdere onderscheidende waarden zichtbaar blijven. Controleer de relatie, kardinaliteit en filterrichting voordat je de formule ingewikkelder maakt.
Waarom verschijnt de fout alleen bij het totaal van een tabel?
Een detailrij kan door de visual tot één waarde zijn gefilterd, terwijl de standaardtotaalrij zonder die groeperingsfilter opnieuw wordt berekend. Gebruik een passende aggregatie of controleer met ISINSCOPE op welk visualniveau de measure wordt geëvalueerd.

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