Data visualisatie

Power BI tutorial week 5: introductie tot DAX en measures

Companies that use data effectively are 5x more likely to make better decisions and 6x more likely to be profitable.

 

— McKinsey & Company

Inleiding

Vandaag de dag speelt data een cruciale rol in het behalen van bedrijfsdoelen. Zo becijferde McKinsey & Company in 2016 in het rapport “The Age of Analytics: Competing in a Data-Driven World” dat bedrijven die hun data effectief benutten vijf keer zo waarschijnlijk betere beslissingen namen en zes keer meer kans hadden op winstgevendheid. Dashboards vormen een essentiële schakel in dit proces.

Het doel van deze tutorial is om je stap voor stap door een praktijkvoorbeeld te begeleiden waarin Business Intelligence wordt ingezet. Hiervoor maken we gebruik van Power BI en een dataset van een fictief snoepgoedbedrijf (afkomstig van Kaggle). We kiezen voor Power BI vanwege de volgende redenen:

  • Microsoft Power BI wordt door Gartner als leider erkend in Business Intelligence;
  • Power BI Desktop is gratis beschikbaar in de Microsoft Store;*
  • Heeyoo heeft uitgebreide ervaring met het bouwen van op maat gemaakte dashboards in Power BI.

 

*Disclaimer: Deze tutorial is specifiek ontworpen voor Power BI Desktop op Windows-systemen, aangezien Power BI Desktop momenteel alleen beschikbaar is voor Windows-gebruikers. Als je een Mac-gebruiker bent, kun je de tutorial niet rechtstreeks uitvoeren. Als je Power BI Desktop wilt gebruiken op een Mac, kun je een virtuele Windows-machine draaien via bijvoorbeeld Parallels of Boot Camp. Wel is het mogelijk Power BI Service via je webbrowser te gebruiken om rapporten en dashboards te bekijken en te delen. Houd er rekening mee dat de functionaliteit van de webversie beperkter is dan die van Power BI Desktop.

 

Door deze tutorial te volgen, krijg je niet alleen inzicht in de mogelijkheden van Power BI, maar ook praktische handvatten om data effectief in te zetten binnen jouw organisatie.

Vorige week hebben we het datamodel voor ons rapport gecreëerd en de eerste visuals toegevoegd. Hiermee hebben we het grootste gedeelte van het voorbereidende werk afgerond. Vanaf deze week zal het uiteindelijke rapport steeds meer vorm gaan krijgen. Deze week maken we kennis met de belangrijke concepten DAX en measures, voegen we enkele visuals toe en configureren deze. Na afloop van deze week staat het basisrapport klaar. In de loop van de tutorial bouwen we deze verder uit!

 

Basisuitleg DAX

Voordat we verder het rapport in duiken, is het goed om even stil te staan bij DAX. DAX staat voor (Data Analysis Expressions) is de formuletaal die wordt gebruikt voor berekeningen binnen Power BI. Hoewel DAX lijkt op de formules die je misschien van Excel kent, is deze taal speciaal ontwikkeld voor datamodellen en werkt hij het beste met grote datasets en relaties tussen tabellen. Een aantal voorbeelden van DAX-functies zijn:

 

  1. Aggregatiefuncties: SUM(), AVERAGE(), COUNT()
  2. Filterfuncties: CALCULATE(), FILTER(), ALL()
  3. Logische functies: IF(), SWITCH()
  4. Tijdintelligentie: TOTALYTD(), SAMEPERIODLASTYEAR()

Het is belangrijk om te beseffen dat DAX altijd op kolommen werkt en niet op individuele cellen, zoals in Excel. Dit betekent dat berekeningen worden uitgevoerd op een complete dataset in plaats van op afzonderlijke cellen. Om het wat concreter te maken, maken we in de volgende sectie een measure aan met behulp van DAX.

 

Let op: DAX is een specialisatie op zich en er bestaan dan ook genoeg cursussen om dit goed in de vingers te krijgen. In deze tutorial behandelen we alleen de basis van DAX om measures effectief te kunnen gebruiken.

Het aanmaken van onze eerste expliciete measure

Een van de meest gebruikte toepassingen van DAX is het aanmaken van expliciete measures. Dit is dan ook wat we nu gaan doen.

  1. Open het .pbix bestand van vorige week en navigeer naar de Report view. Als het goed is zie je hier de twee visuals staan. Je kunt ze eenvoudig naar een andere plek slepen, maar voor nu zetten we ze even linksonder op de pagina. Move visuals

 

  1. Zoals we vorige week al zagen, maakt Power BI in deze visuals automatisch zogenaamde impliciete measures Dit is een standaard aggregatie (zoals Som, Gemiddelde, etc.) die ontstaan zodra je een numerieke kolom in het Values-veld van een visual sleept. Je herkent het makkelijk: selecteer de visual, ten vervolgens klik op het visualicoontje en je ziet dat bij Values bijvoorbeeld het unieke aantal orders (‘Count Distinct’) wordt geteld: Impl measure

 

  1. Het wordt echter sterk aangeraden om zoveel mogelijk expliciete measures te gebruiken in de visuals. Hier komt DAX om de hoek kijken. Expliciete measures zijn namelijk door de gebruiker gedefinieerde berekeningen met DAX. Het grote voordeel? Je hebt er veel meer controle over en je kunt ze overal in je rapport gebruiken. In tegenstelling tot impliciete measures, die alleen werken binnen de visual waarin je ze hebt aangemaakt, zijn expliciete measures dus flexibel en herbruikbaar. Laten we als voorbeeld de expliciete measure Total Orders nemen. Er zijn verschillende plekken in de interface van Power BI Desktop waar je dit kunt doen, maar wij doen het in de Report View.
  2. Navigeer naar New Measure en volg de stappen in de screen recording. Voer de onderstaande formule in. Je kunt ervoor kiezen de formule simpelweg te kopiëren en te plakken of om deze handmatig in te voeren (zie hiervoor de volgende bullet):
Total Orders =
DISTINCTCOUNT(
 Sales[Order ID]
)

 

New measure Power BI

Een beetje achtergrond; de globale opbouw van een measure is als volgt:

Naam Measure = 
FORMULE(
Naam Tabel[Naam Kolom]
)

 

Mocht je zelf de measure handmatig willen invoeren, let dan op het volgende:

  1. Het is handig om de verschillende componenten van de measure over verschillende regels te verdelen. Dat doe je door op ‘shift + Enter’ te drukken om naar de volgende regel te gaan.
  2. Begin met het invoeren van de naam van de measure (Total Orders), gevolgd door een ‘=’. Druk daarna weer op ‘shift + Enter’ om op de volgende regel verder te gaan.
  3. Voor deze measure willen we het unieke aantal Order IDs tellen, dus kiezen we voor de ‘DISTINCTCOUNT’ formule. Hierbij kun je gebruik maken van de autocomplete-functionaliteit: zodra je enkele letters hebt getypt, stelt Power BI je automatisch een aantal functies voor. Gebruik de pijltjestoetsen om naar de juiste functie navigeren en druk op ‘Tab’ om deze te selecteren.
  4. Hierna volgt de Tabelnaam (Sales), gevolgd door de naam van de specifieke kolom (OrderID) tussen vierkante haken. Ook hier kun je weer gebruik maken van de autocomplete-functie.
  5. Klaar? Druk op ‘Enter’ en je measure is aangemaakt.

Het managen van measures

Measure in Customers

Je vraagt je misschien af waar je de nieuwe measure terug kunt vinden. Als je geen specifieke tabel hebt geselecteerd voordat je op New measure klikte, wordt de measure meestal in de eerste tabel van je model opgeslagen, in ons geval is dat de Customer-tabel. Je herkent een measure aan het rekenmachine-icoontje naast de naam:

Opmerking: mocht je de measure niet in deze tabel terugvinden, kijk dan de overige tabellen even na. Het zou kunnen zijn dat je bij het aanklikken van New measure in de vorige stap een andere tabel had geselecteerd Zie je ‘m daar niet? Geen zorgen, hij kan ook in een andere tabel staan, afhankelijk van welke je op dat moment geselecteerd had. Check dus even de andere tabellen als je ‘m kwijt bent.

 

Wat betreft het managen van measures zijn er twee opties. Je kunt ervoor kiezen om elke measure op te slaan in een bestaande tabel of om alle measures onder te brengen in een zogenaamde ‘Measures’-tabel. De tweede optie is het meest overzichtelijk en dat is dan ook wat we gaan doen.

  1. Allereerst maken we een nieuwe tabel aan. Klik op Enter data onder de Home-tab: Enter data

 

  1. We voeren geen data in en noemen de tabel ‘Measure Table’ en klikken op Load. Onder het datapaneel zien we dat er nu een nieuwe tabel is toegevoegd met een lege kolom (Column1): Measure Table Power BI

 

  1. De volgende stap is het verplaatsen van de Total Orders measure van de Customer-tabel naar de Measure Table. Hiervoor selecteren we de Total Orders measure in de Customer-tabel, navigeren we naar Home table in de balk en passen de locatie van de measure aan naar Measure Table. Nu kunnen we ook de lege kolom (Column1) uit de Measure Table verwijderen door op de drie puntjes te klikken en vervolgens Delete from model te selecteren: Move to Measure Table Power BI

 

  1. Nu kunnen we checken of onze expliciete measure goed werkt. Sleep de Total Orders-measure naar het Values-veld van beide visuals. Als het goed is, zie je dat de waarden overeenkomen met die van de impliciete measure. Dat betekent dat onze measure goed is ingesteld. Tijd om op te ruimen: verwijder de impliciete measure uit de visuals, klik daarna op de matrix en druk op delete. Tot slot verplaatsen we de bar chart naar linksonder op de pagina voor een nettere indeling: Swap impl for expl measure

 

  1. Een punt wat we nog niet besproken hebben, is de opmaak van de measure. Wanneer je de Total Orders-measure aanklikt, zie je boven in het scherm dat het Measure tools-menu actief wordt. Onder Format zie je dat de measure is ingesteld op ‘Whole number’, wat correct is. Door op het pijltje te klikken zie dat er andere formats beschikbaar zijn, zoals ‘Currency’ en ‘Percentage’. Het enige wat we aan de opmaak van deze measure willen veranderen is het instellen van de komma als duizend-separator: dat doen we door op het kommateken te klikken. Of dit succesvol is geïmplementeerd kunnen we verifiëren door met de muis over de visual te zweven: Measure formatting Power BI

Het aanmaken van de tweede measure

  1. Laten we nog een measure toevoegen die de totale omzet voor ons zal berekenen: Revenue. De DAX-formule voor deze measure ziet er iets complexer uit dan de die van de vorige measure:
Revenue =
SUMX(Sales, Sales[Units]
*
RELATED('Product'[Unit Price]))
  1. Let op dat we eerst de Measure Tabel selecteren voordat we op New measure klikken, zodat de measure direct in de juiste tabel wordt opgeslagen. Measure Revenue

 

  1. Na het aanmaken van de measure formatteren we deze meteen op de volgende wijze:
    1. Format: Currency
    2. Komma als duizend-separator (klik deze knop aan)
    3. 0 decimalen

Format measure

 

Laten we nog even inzoomen op wat er gebeurt in deze measure:

  • SUMX is een iteratieve functie in DAX, wat betekent dat deze rij voor rij door de opgegeven tabel (in dit geval de Sales-tabel) loopt. In dit geval door de Sales-tabel. Dit betekent dat de functie niet gewoon een som maakt van de waarden in een kolom, maar een berekening uitvoert voor elke rij en vervolgens de resultaten van deze berekeningen optelt.
  • In de Sales-tabel wordt voor elke rij het aantal Units vermenigvuldigd met de bijbehorende Unit Price van het product. Echter, omdat Unit Price niet in dezelfde tabel staat, wordt hiervoor de RELATED functie gebruikt.
  • RELATED haalt de waarde van de [Unit Price] op uit de Product-tabel, waarbij de relatie tussen de twee tabellen wordt gebruikt.

Het mooie aan Power BI is dat je een measure direct in het canvas van de Reporting view kunt slepen. Power BI kiest dan automatisch een geschikte visual. In dit geval is dat de Card-visual en dat is precies wat we willen. De Card-visual is ideaal om een enkele samengevatte waarde weer te geven, zoals een zogenaamde KPI (Key Performance Indicator). Hier toont de kaart de totale Revenue ($142K, waarbij K staat voor duizend). Card visual

Het opmaken van visuals

Zoals gezegd is het doel van deze week om een basisrapport te maken. Ons rapport bevat inmiddels al twee measures en twee visuals, dus we zijn goed op weg. Een goede tip om nu al mee te nemen (om jezelf later tijd te besparen) is om alvast aandacht te besteden aan de opmaak van je visuals. De algemene opmaak van het rapport zelf behandelen we in week 7, maar laten we nu alvast starten met de Card-visual.

Voor elke visual geldt: zodra je deze aanklikt krijg je twee symbolen te zien:

  • Het grafieksymbool (1): hiermee stel je in welke data je in de visual wil gebruiken. Die kennen we inmiddels.
  • Het penselensymbool (2): Hiermee open je het menu voor de opmaak van de visual. Door op More options te klikken wordt het Format-paneel (3) aan de rechterkant van het scherm geopend. Hier vind je een zeer uitgebreid menu met alle opmaakopties voor de visual in kwestie. Dit paneel kan trouwens ook direct worden uitgevouwen wanneer je de visual geselecteerd hebt. Format visual

Opmerking: bij sommige visuals (zoals de Card) kun je bepaalde items direct aanpassen. Zo kan je simpelweg dubbelklikken op zowel de waarde ($142K) als het label (‘Revenue’) en ze meteen bewerken.

 

  1. Aangezien we meerdere Cards willen maken, is het een goed idee om alvast te bepalen hoe we deze visual willen opmaken. Zo maken we de volgende keuzes en voeren die vervolgens gelijk door:
    1. Lettertype: Segoe UI
    2. Lettergrootte en -kleur:
      1. Waarde (Callout value): 30, zwart
      2. Label (Category label): 10, donkergrijs (we gebruiken hier HEX #605E5C, maar wees vrij om zelf een tint uit te kiezen)
    3. Titel (Title): niet nodig, omdat we al een label hebben, dus zetten we het schuifje naar ‘off’ Font size color card

 

  1. De laatste stap is om de afmetingen van de Card aan te passen. Nadat we de Card helemaal in de gewenste opmaak hebben gezet, kunnen we deze nu simpelweg kopiëren en plakken (selecteer de visual en typ eerst ‘ctrl + c’ en daarna ‘ctrl + v’). Vervolgens ruilen we de Revenue-measure in voor Total Orders en zo hebben we nu twee kaarten in dezelfde stijl: Total orders scorecard

 

  1. Vervolgens maken we de Clustered bar chart op volgens de volgende waarden:
    1. Title: Segoe UI, 12, vetgedrukt, zwart, gecentreerd

Format bar chart Power BI

 

  1. X-axis:
    1. Values: Segoe UI, 9, donkergrijs (#605E5C)
    2. Title: off

Format bar chart X Power BI

 

  1. Y-axis:
    1. Values: Segoe UI, 9, donkergrijs (#605E5C)
    2. Title: Segoe UI, 9, zwart

Format bar chart Y Power BI

 

  1. Gridlines: off

Format bar gridlines Power BI

Invoegen en opmaken van een lijndiagram

We sluiten deze week af met het toevoegen van nog een visual. We willen graag zien hoe de omzet zich in de loop van de tijd ontwikkelt. Daarvoor is een Line chart meestal de beste keuze.

  1. Laten we die dan ook invoegen via het inmiddels bekende Insert-menu. Vervolgens voegen we meteen velden toe:
    1. Y-axis: sleep hierin de Total Revenue-measure.
    2. X-axis: laten we eens beginnen met het Date-veld uit de Date-tabel te selecteren.

Line chart Power BI

 

  1. De resulterende visual ziet er als volgt uit. Een handig trucje: zodra je de visual geselecteerd hebt en het datapaneel is uitgevouwen, zie je in één oogopslag welke velden er geselecteerd zijn, omdat daar een groen vinkje naast staat:

Revenue visual

 

  1. We zien nu dat de omzet per dag wordt getoond. In sommige gevallen kan dat relevant zijn, maar voor deze pagina zijn we meer geïnteresseerd in de algemene trend over een langere tijdsperiode. Nu komen de extra kolommen die we in week 3 hebben toegevoegd aan de Data-tabel goed van pas. Door het Date-veld te vervangen door het Start of Month-veld, krijgen we een lagere resolutie van onze omzet te zien: Swap time dim

 

  1. Wat resteert is het opmaken van deze grafiek. Een truc (die helaas niet perfect werkt) die je kunt gebruiken is de Format painter-optie die we onder Home vinden. Hiermee kun je de opmaak van visual 1 kopiëren en die op visual 2 toepassen. Het werkt als volgt:
    1. Selecteer visual 1 (bron)
    2. Selecteer Format painter
    3. Selecteer visual 2 (doel)

Format painter Power BI

 

  1. We komen een heel eind dankzij de Format painter. Helaas zijn de gridlines nog wel actief, dus die zetten we uit: Gridlines off

 

  1. Als het goed is ziet de pagina er nu zo uit. Inmiddels hebben we twee expliciete measures gecreëerd en twee visuals geconfigureerd. Een aardig basisrapport al! Basisrapport

Daarmee ronden we de tutorial van deze week af. We hebben geleerd hoe we een basisrapport kunnen maken in Power BI, inclusief een introductie tot DAX en het gebruik van (expliciete) measures. We hebben enkele visuals gemaakt en ontdekt hoe we visualisatie instellingen, zoals lettertype en gridlines, kunnen aanpassen. Volgende week zullen we deze kennis verder uitdiepen voor het uitbreiden van ons rapport. Tot dan!

 

Ga hier terug naar het overzicht >

Heeyoo Power BI tutorial week 5
Hulp nodig? Of eens sparren met een specialist?

DAX is krachtig, maar complex. Onze consultants helpen organisaties om hier écht mee het verschil te maken. Meer weten? Neem gerust contact op?

Gerelateerde berichten

Ook interessant:

Bedankt, we gaan voor je aan de slag!