Home Forums Bricklog BI Quick Tips DAX Fundamentals

Handige hapklare tips om je snel op weg te helpen, hier kun je ook meteen vinden wat je met de nieuwste maandelijkse Power BI updates kunt.

Tags: 

  • Dit onderwerp is leeg.
1 bericht aan het bekijken (van in totaal 1)
  • Auteur
    Berichten
  • #6631
    Bricklog
    Sleutelbeheerder

     

    DAX Fundamentals

    -Moet iets op een as staan? Moet ergens mee gefilterd worden? Kolom maken.

    – Is dit niet het geval? Meting maken.

    –  Kolommen gebruiken voor berekeningen is in 99% van de gevallen onkunde. Daarom gaan we nu eerst beginnen met een stukje DAX fundamentals

    –  Om beter te begrijpen hoe metingen werken, eerst een stukje uitleg:  De context is de omgeving waar de meting berekend wordt, alle filters op een pagina die meegenomen worden noemen we de initiële context Vervolgens kunnen we de context op 2 verschillende manieren verder aanpassen, door middel van aggegratiefuncties of iteratiefuncties.

    –  Om hier verder op in te gaan, gaan we eerst een metingen tabel aanmaken

    Meting tabel toevoegen

    -Vervolgens maken we een simpele meting waarin we de kilometers uitrekenen en zetten deze met drivers in een tabel.

    Kilometers(SUM) = sum(Ritten[Kilometers])

    – Als we nu een datum slicer toevoegen, en deze op 2019 zetten, zien we dat de data gefilterd wordt met alleen de kilometers van 2019

    Tabel met driver, kilometers toevoegen, datumslicer toevoegen.

    – Dezelfde contextwijziging hadden we ook in een formule kunnen verwerken, dit werkt hetzelfde:

    Kilometers Filter aggegratie = CALCULATE([Kilometers(SUM)],FILTER(Kalender,YEAR(Kalender[Datum])=2019))

    – Als we nu de datumslicer heen en weer bewegen, zien we dat deze berekening precies hetzelfde doet tot je de slicer groter maakt dan 2019, conclusie: Eerst wordt de initiële context gezet welke verder gefilterd is door de door ons meegegeven extra context.

    -We kunnen ook de complete initiële context negeren in een formule, dit ziet er als volgt uit:

    Kilometetrs geen initiële context = CALCULATE([Kilometers(SUM)],ALL())

    -We kunnen nu de datumslicer bewegen wat we willen, maar er gebeurd niks meer mee. De meting negeert hem nu. Er zijn verschillende formules om hier nuances in aan te brengen, zo kun je bijvoorbeeld ALLEXCEPT() of ALLSELECTED().

    -We hebben nog een vierde optie, een formule schrijven zonder intitële context, wel met meegegeven context. Dit ziet er als volgt uit:

    Kilometers filter zonder initiële context = CALCULATE([Kilometers Filter aggegratie],ALL())

    -Deze formule laat vast zien hoeveel kilometers er in 2019 gereden zijn, dit is niet filterbaar op de pagina omdat de initële context niet is meegenomen. We kunnen deze nog iets verder aanscherpen, door alle initiële context behalve die van de kalender te negeren zien we per chauffeur aan wat er aan kilometers is gereden.

    Kilometers filter zonder initiële context = CALCULATE([Kilometers Filter aggegratie],ALL(Kalender))

    -Dit zijn allemaal Aggegratiefuncties, we kunnen ook iteratiefuncties toepassen op dezelfde data, bijvoorbeeld door een SUMX toe te passen:

    Kilometers(SUMX) = SUMX(Ritten,Ritten[Kilometers])

    -SUMX geeft in deze situatie exact hetzelfde weer als de sum functie, maar omdat deze op regelniveau vanuit de opgegeven tabel naar de data kijkt kunnen we deze op een andere manier uitbouwen. Omdat dit een iteratieve functie is, kunnen we logica inbouwen per regel voordat deze geaggegreerd worden, zo kan ik nu aan de hand van een kostprijs mijn kilometerkosten uitrekenen:

    Kilometerkosten = SUMX(Ritten,Ritten[Kilometers]*RELATED(Wagens[Kostprijs per kilometer]))

    -Aan een iteratieve functie kunnen we ook nog aggegratiefilters toevoegen, dit doen we (meestal) door de gespecificeerde tabel te filteren, dit ziet er als volgt uit:

    Kilometerkosten maandag = SUMX(FILTER(Ritten,WEEKDAY(RELATED(Kalender[Datum]),2)=1),[Kilometers]*RELATED(Wagens[Kostprijs per kilometer]))

    -We hebben nu in een iteratiefunctie uitgerekend wat de kilometerkosten waren, op een met een aggegratiefunctie gefilterde tabel.

1 bericht aan het bekijken (van in totaal 1)
  • Je moet ingelogd zijn om een antwoord op dit onderwerp te kunnen geven.