We zien veel Power BI gebruikers worstelen met DAX. Na een aantal eerste eenvoudige formules blijkt de DAX leercurve toch wat steiler te zijn dan verwacht. In deze serie DAX voor Financials leggen we een aantal veelgebruikte DAX-formules uit. We behandelen daarbij formules die veel gebruikt worden voor financiële rapportages en dashboards. We kijken dus naar DAX vanuit de optiek van een accountant, controller of administrateur.
Voorbeeld dataset
In deze serie gebruiken we een heel eenvoudige dataset met 3 tabellen:
- Mutaties: de financiële grootboekmutaties
- Klanten: de klanten
- Grootboek: de grootboekrekeningen
De inhoud van de tabellen is als volgt:
Onderschat overigens niet het belang van een goed datamodel. Een onjuist datamodel zal leiden tot onjuiste uitkomsten van DAX-formules. Alle DAX berekeningen zijn gebaseerd op de tabellen met hun onderlinge relaties. Besteed daarom eerst aandacht aan een correct datamodel voordat je DAX-formules gaat maken.
SUM
We beginnen in dit eerste artikel eenvoudig, de eerste DAX-functie die we gebruiken is SUM.
SUM(<column>)
Deze functie werkt precies hetzelfde als de SOM-formule in Excel.
De SUM-functie telt alle waarden uit een kolom bij elkaar op, de uitkomst is een decimaal getal. In deze visual hebben we ook kolommen voor Klantnr en Klant, door deze filter context wordt de som berekend per klant.
SUMX
Een functie die hier veel op lijkt is SUMX. Beide tellen waarden op, maar doen dit wel op een verschillende manier.
SUMX(<table>, <expression>)
De functie SUMX is een iterator, dat wil zeggen dat deze per regel een berekening uitvoert en vervolgens de uitkomsten van deze berekeningen optelt.
De eerste parameter is de tabel waarover SUMX moet itereren, in dit voorbeeld de tabel Mutaties. Per regel wordt de expressie in de tweede parameter uitgevoerd, namelijk Aantal * Prijs. Het resultaat van de functie is de optelling van alle regeluitkomsten.
Wanneer SUM en wanneer SUMX?
De uitkomst van beide formules in deze voorbeelden hetzelfde. De berekening van SUMX is zwaarder, omdat de berekening regel voor regel wordt gedaan. De functie SUMX kost hierdoor meer resources, waardoor SUM de voorkeur heeft. Heb je geen kolom Bedrag zoals in dit voorbeeld? Dan is het een oplossing om hiervoor SUMX te gebruiken.
Een alternatief wanneer er geen kolom Bedrag is, is het optimaliseren van de datamodel in Power Query. In de Power Query Editor kun je ook een kolom Bedrag toevoegen, waarin je de berekening Aantal * Prijs uitvoert. Het voordeel is dat de berekening dan eenmalig wordt uitgevoerd tijdens de import. In DAX wordt de berekening telkens uitgevoerd wanneer je een filter in het dashboard wijzigt. Bij een grote hoeveelheid regels zal de performance dan minder zijn.
In het volgende blog item gaan we kijken hoe we de regels kunnen filteren waarover we de berekening willen maken.
Meer weten?
Met Power BI maak je in korte tijd fraaie dashboards en rapportages. Vanuit Davista helpen we je daar graag mee op weg. Voor diverse softwarepakketten bieden we connectors aan, zodat je jouw data in Power BI kunt gebruiken. Voor een snelle start kun je aan de slag met een standaard dashboard of met één van de templates. Natuurlijk kunnen we je ook helpen met een dashboard op maat, of we geven je een training zodat je zelf jouw dashboards kunt maken.
Nodig ons gerust uit voor een vrijblijvende kennismaking, zodat we de meerwaarde voor jouw onderneming kunnen laten zien.