Wat is de SUMX-functie in Power BI?
De SUMX-functie in Power BI is een krachtige DAX-functie die wordt gebruikt om de som te berekenen van een expressie die voor elke rij in een tabel wordt geëvalueerd. Deze functie is belangrijk omdat ze complexere berekeningen mogelijk maakt dan een eenvoudige som.
Houd onze DAX-cheat sheet bij de hand voor een snel naslagwerk van veel van de nuttigste DAX-functies die je tegenkomt.

De syntaxis van de SUMX-functie is
SUMX(Table, Expression)
- Table: De tabel of tabelexpressie waarover de functie iterereert.
- Expression: De expressie die voor elke rij van de tabel wordt geëvalueerd. Deze expressie omvat vaak gegevens uit kolommen in de tabel.
SUMX is vooral handig wanneer je berekeningen moet uitvoeren die afhankelijk zijn van individuele rijwaarden voordat je de resultaten optelt. Denk aan het berekenen van de totale verkoop door voor elke transactie de hoeveelheid met de prijs te vermenigvuldigen of verschillende kortingspercentages per product toe te passen voordat je de totaal afgeprijsde verkoop optelt. Het biedt flexibiliteit en precisie in je berekeningen en is daarom een behoorlijk belangrijke functie om te leren.
Hoe SUMX werkt in Power BI
Zo werkt de SUMX-functie onder de motorkap:
- Wanneer SUMX wordt aangeroepen, doorloopt het één voor één de rijen van de opgegeven tabel. Voor elke rij wordt tijdelijk een rijcontext vastgesteld, een soort omgeving waarin de waarden van de huidige rij direct toegankelijk zijn.
- In deze rijcontext evalueert de functie de expressie die in het tweede argument is opgegeven. De expressie omvat doorgaans één of meer andere kolomwaarden uit de huidige rij. Terwijl de functie door de tabel iterereert, herberekent ze deze expressie voor elke rij op basis van de gegevens van die rij.
- Terwijl SUMX elke rij verwerkt, worden de resultaten geaggregeerd en wordt een doorlopend totaal bijgehouden. Power BI gebruikt de in-memory analyse-engine van DAX (VertiPaq), die is geoptimaliseerd voor dit soort berekeningen.
- Na het doorlopen van alle rijen rondt SUMX het geaggregeerde totaal af, de som van de individuele resultaten die voor elke rij zijn berekend. Deze eindwaarde wordt vervolgens als output van de functie geretourneerd.
Contexten begrijpen
In Power BI is context cruciaal om te begrijpen hoe DAX-functies zoals SUMX werken. Context bepaalt hoe de waarden in datamodellen worden berekend en weergegeven. Bekijk onze cursus introductie tot DAX, waarin we contexten uitgebreider bespreken. Bij de SUMX-functie zijn er twee hoofdtypen context om rekening mee te houden: rijcontext en filtercontext.
Rijcontext
Rijcontext verwijst naar de omgeving waarin DAX-formules elke rij van een tabel evalueren. Binnen een rijcontext kun je rechtstreeks naar kolommen van de tabel verwijzen en gebruiken DAX-formules de waarde van de huidige rij in berekeningen.
Wanneer je SUMX gebruikt, creëert en benut het een rijcontext voor de werking. Voor elke rij in de opgegeven tabel evalueert SUMX de opgegeven expressie in de context van die specifieke rij.
Filtercontext
Filtercontext is een set filters die wordt toegepast op gegevens in een Power BI-rapport, zoals filters uit visuals, slicers en filterinstellingen op rapportniveau. Deze context bepaalt welke datapunten worden meegenomen in berekeningen.
Hoewel SUMX voor zijn rij-voor-rij-berekeningen binnen een rijcontext opereert, vallen deze berekeningen nog steeds onder de algemene filtercontext van het rapport of de visual. Dit betekent dat de rijen waarover SUMX iterereert, voldoen aan de criteria die door de huidige filtercontext zijn gedefinieerd.
Interactie tussen contexten in SUMX
Bij het gebruik van SUMX respecteert de functie zowel de rijcontext als de filtercontext. De tabel waarover SUMX iterereert, wordt gevormd door de filtercontext, terwijl de berekening voor elke rij in de rijcontext wordt uitgevoerd.
Je kunt een maatwerk (measure) binnen SUMX gebruiken. In dat geval vindt een contexttransitie plaats, waarbij de rijcontext tijdelijk wordt omgezet in een equivalente filtercontext om de maat voor elke rij te evalueren.
Best practices voor SUMX
Houd bij het gebruik van de SUMX-functie in Power BI rekening met een paar best practices:
- Zorg dat je datamodel goed is gestructureerd voordat je SUMX toepast. Goed gedefinieerde relaties en een degelijk modelschema zijn cruciaal voor nauwkeurige en geoptimaliseerde Power BI-rapporten.
- SUMX wordt niet ondersteund in DirectQuery-modus wanneer het wordt gebruikt in berekende kolommen of regels voor rijniveau-beveiliging.
- Houd de expressies binnen SUMX zo eenvoudig en efficiënt mogelijk. Vermijd overdreven complexe berekeningen die de prestaties vertragen, vooral bij grote datasets.
- Let op contexttransitie en hoe die de resultaten van je functie kan beïnvloeden.
- SUMX houdt alleen rekening met getallen. Blanks, logische waarden en tekst worden genegeerd.
SUMX versus andere functies
Sommige functies lijken op SUMX, en weten welke functie je wanneer gebruikt kan wat verwarrend zijn. Laten we twee functies uitlichten die het vaakst tot verwarring leiden.
SUMX vs SUM
SUM wordt gebruikt om de som van een kolom in een tabel te berekenen en heeft de volgende syntaxis:
SUM(Column)
SUMX doorloopt elke rij om een expressie te evalueren, terwijl SUM rechtstreeks waarden uit één kolom aggregeert. Dit betekent dat SUMX complexere berekeningen aankan die meerdere kolommen omvatten.
Door de iteratieve aard is SUMX echter intensiever voor resources, vooral bij grote datasets, vergeleken met SUM. Houd dit in gedachten als je met een groot datamodel werkt en gebruik SUM voor eenvoudige optellingen.
SUMX vs CALCULATE
CALCULATE wijzigt de filtercontext van een berekening en is een van de krachtigste functies in DAX. Dit is de syntaxis van de CALCULATE-functie:
CALCULATE(Expression, Filter1, Filter2,...)
CALCULATE is ideaal voor situaties waarin je berekeningen moet uitvoeren onder andere filtervoorwaarden dan die momenteel op het rapport of model worden toegepast. SUMX daarentegen is bedoeld voor berekeningen op rijniveau gevolgd door een aggregatie.
In complexe scenario's kunnen we CALCULATE samen met andere functies gebruiken, zoals SUMX. Je kunt bijvoorbeeld CALCULATE gebruiken om een specifieke filtercontext te definiëren waarbinnen SUMX zijn berekeningen op rijniveau en aggregatie uitvoert.
SUMX implementeren in Power BI: stapsgewijze gids
Met de Power BI-voorbeeldgegevens (beschikbaar wanneer je Power BI Desktop installeert) laten we zien hoe je de SUMX-functie gebruikt en hoe je SUMX combineert met andere nuttige DAX-functies.
Hier is een momentopname van onze gegevens met maandelijkse verkoop voor verschillende producten in diverse segmenten en landen.

Stap 1: Een maat maken met SUMX
Hier is een klassiek voorbeeld van de kracht van SUMX. We willen het totaal aan verkopen berekenen met het aantal verkochte eenheden, de prijs per eenheid en de waarde van eventuele kortingen.
SUMX(Sales, (Sales[Units Sold] * Sales[Sale Price])-Sales[Discounts])
Hier is een tabel met het resultaat van onze SUMX-functie. Zoals je ziet kan op totale verkoop ook een filtercontext worden toegepast—in dit geval filteren we op jaar en product.

Stap 2: Filters toepassen op SUMX
We kunnen op twee manieren filters gebruiken met de SUMX-functie: met FILTER of CALCULATE.
FILTER wordt gebruikt om specifieke filters toe te passen op een tabel of expressie binnen SUMX. Het biedt fijnmazige controle over de rijen waarover SUMX iterereert.
SUMX(FILTER(Sales, Sales[Discount Band] = "High"), Sales[Units Sold])
CALCULATE wijzigt de filtercontext voor de SUMX-functie, waardoor complexe voorwaardelijke aggregaties mogelijk worden.
SUMX(Sales, CALCULATE(SUM(Sales[Units Sold]), Sales[Year] = 2020))
Stap 3: SUMX combineren met andere functies
ALL en ALLEXCEPT
Deze functies worden gebruikt om filters van een tabel te verwijderen, of van alle tabellen behalve de opgegeven. Ze worden vaak gebruikt binnen CALCULATE en in combinatie met SUMX om berekeningen uit te voeren over een ongefilterde dataset.
SUMX(ALL(Sales), Sales[Sale Price] * Sales[Units Sold])
VALUES
VALUES retourneert een éénkolomstabel met unieke waarden uit een kolom. Je kunt dit combineren met SUMX voor berekeningen die itereren over unieke waarden.
SUMX(VALUES(Sales[Country]), [Total Sales])
AVERAGEX, MINX en MAXX
Dit zijn andere iteratieve functies, vergelijkbaar met SUMX, maar respectievelijk gebruikt om gemiddelde, minimum- of maximumwaarden te berekenen. Ze kunnen genest of naast SUMX worden gebruikt.
AVERAGEX(Customers, SUMX(RELATEDTABLE(Sales), Sales[Units Sold]))
IF en SWITCH
Logische functies zoals IF en SWITCH kunnen binnen SUMX worden gebruikt om voorwaardelijke berekeningen uit te voeren.
SUMX(Sales, IF(Sales[Country] = "Mexico", Sales[Units Sold], 0))
USERELATIONSHIP
USERELATIONSHIP specificeert een bepaalde relatie die in een berekening moet worden gebruikt. Dit is vooral handig wanneer er meerdere relaties tussen tabellen bestaan.
SUMX(CALCULATETABLE(Sales, USERELATIONSHIP(Date[Date], Sales[Date])), Sales[Units Sold])
Conclusie
In deze tutorial zijn we dieper ingegaan op de SUMX-functie in Power BI en hebben we je laten zien hoe je die zelf implementeert. Het is niet alleen een flexibele en krachtige DAX-functie, maar ze laat ook zien hoe belangrijk het is om contexten in DAX te begrijpen. Wil je meer leren, bekijk dan onze skill track Power BI fundamentals.


Als je net bent begonnen met Power BI via ons Data Analyst in Power BI-carrièrempad, ken je waarschijnlijk al de basisfunctie SUM uit de cursus introductie tot DAX (zo niet, bekijk dan deze korte DAX-tutorial). In dat geval vraag je je misschien ook af wat de SUMX-functie is, hoe die werkt en hoe je die in je analyses kunt gebruiken.
In deze tutorial verkennen we de SUMX-functie, beantwoorden we al deze vragen en begeleiden we je bij de implementatie in Power BI.
Onthoud bij deze en andere Power BI-tutorials dat je als business intelligence- of Power BI-ontwikkelaar misschien niet verplicht bent om te programmeren, maar dat het een grote troef voor je carrière kan zijn. Lees ons artikel over of je als BI-analist moet leren programmeren om te ontdekken waarom.