Basisbeginselen van DAX leren in Power BI Desktop

Gebruikers die nog niet bekend zijn met Power BI Desktop, kunnen dit artikel gebruiken als een snelle en eenvoudige inleiding over hoe u DaX (Data Analysis Expressions) kunt gebruiken om veel eenvoudige berekeningen en problemen met gegevensanalyse op te lossen. We behandelen enkele conceptuele informatie, een reeks taken die u kunt voltooien en een kennistoets om te testen wat u hebt geleerd. Nadat u dit artikel hebt voltooid, moet u een goed begrip hebben van de belangrijkste fundamentele concepten in DAX.

Wat is DAX?

DAX is een verzameling functies, operators en constanten die kunnen worden gebruikt in een formule, of expressie, om een of meer waarden te berekenen en te retourneren. MET DAX kunt u nieuwe gegevens maken op basis van gegevens die al in uw model aanwezig zijn.

Waarom is DAX zo belangrijk?

U kunt eenvoudig een nieuw Power BI Desktop-bestand maken en er enkele gegevens in importeren. U kunt zelfs rapporten maken die waardevolle inzichten tonen zonder dax-formules te gebruiken. Maar wat moet u doen als u het groeipercentage in productcategorieën en voor verschillende datumbereiken moet analyseren? Of moet u de groei van het jaar tot het jaar berekenen in vergelijking met markttrends? DAX-formules bieden deze mogelijkheid en vele andere belangrijke mogelijkheden ook. Als u leert hoe u effectieve DAX-formules maakt, kunt u optimaal profiteren van uw gegevens. Wanneer u de informatie krijgt die u nodig hebt, kunt u beginnen met het oplossen van echte zakelijke problemen die van invloed zijn op uw bottom line.

Vereisten

U bent misschien al bekend met het maken van formules in Microsoft Excel en die kennis is handig bij het begrijpen van DAX. Maar zelfs als u geen ervaring hebt met Excel-formules, helpen de concepten die hier worden beschreven, u meteen aan de slag te gaan met het maken van DAX-formules en het oplossen van echte BI-problemen.

We richten ons op het begrijpen van DAX-formules die worden gebruikt in berekeningen, met name in metingen en berekende kolommen. U moet al bekend zijn met het gebruik van Power BI Desktop om gegevens te importeren en velden toe te voegen aan een rapport, en u moet ook bekend zijn met de basisconcepten van metingen en berekende kolommen.

Voorbeeldwerkmap

De beste manier om DAX te leren, is door enkele basisformules te maken, deze te gebruiken met werkelijke gegevens en de resultaten voor uzelf te bekijken. De voorbeelden en taken hier gebruiken het bestand Contoso Sales Sample voor Power BI Desktop. Dit voorbeeldbestand is hetzelfde als in de zelfstudie: Uw eigen metingen maken in power BI Desktop-artikel .

Laten we beginnen

We stellen onze kennis van DAX onder de knie rond drie fundamentele concepten: Syntaxis, Functies en Context. Er zijn andere belangrijke concepten in DAX, maar het begrijpen van deze drie concepten biedt de beste basis voor het bouwen van uw DAX-vaardigheden.

Syntaxis

Voordat u uw eigen formules maakt, gaan we eens kijken naar de syntaxis van DAX-formules. Syntaxis bevat de verschillende elementen waaruit een formule bestaat, of eenvoudiger gezegd, hoe de formule wordt geschreven. Hier volgt bijvoorbeeld een eenvoudige DAX-formule voor een meting:

Schermopname van een DAX-formule met aanwijzers naar afzonderlijke syntaxiselementen.

Deze formule bevat de volgende syntaxiselementen:

A. De naam van de meting, totale verkoop.

B. De gelijktekenoperator (=), die het begin van de formule aangeeft. Wanneer deze wordt berekend, wordt er een resultaat geretourneerd.

C. De DAX-functie SUM, waarmee alle getallen in de kolom Sales[SalesAmount] worden opgeteld. U krijgt later meer informatie over functies.

D. Haakjes (), rond een expressie die een of meer argumenten bevat. Voor de meeste functies is ten minste één argument vereist. Een argument geeft een waarde door aan een functie.

E. De tabel waarnaar wordt verwezen, Sales.

F. De kolom waarnaar wordt verwezen, [SalesAmount], in de tabel Sales. Met dit argument weet de functie SUM op welke kolom een SOM moet worden samengevoegd.

Wanneer u een DAX-formule wilt begrijpen, is het vaak handig om elk van de elementen op te splitsen in een taal die u elke dag denkt en spreekt. U kunt deze formule bijvoorbeeld lezen als:

Voor de meting met de naam Totale verkoop berekent u (=) de SOM van waarden in de kolom [SalesAmount] in de tabel Sales.

Wanneer deze meting wordt toegevoegd aan een rapport, worden waarden berekend en geretourneerd door verkoopbedragen op te tellen voor elk van de andere velden die we opnemen, bijvoorbeeld Cel-Telefoon s in de VS.

Misschien denkt u: 'Doet deze meting hetzelfde als als als ik het veld SalesAmount aan mijn rapport zou toevoegen?' Nou, ja. Maar er is een goede reden om onze eigen meting te maken waarmee waarden uit het veld SalesAmount worden opgeteld: we kunnen deze gebruiken als argument in andere formules. Deze oplossing lijkt nu misschien wat verwarrend, maar naarmate uw DAX-formulevaardigheden toenemen, zal deze meting uw formules en uw model efficiënter maken. In feite ziet u de meting Totale verkoop die later wordt weergegeven als argument in andere formules.

Laten we nog een paar dingen over deze formule bekijken. We hebben met name een functie geïntroduceerd, SUM. Functies zijn vooraf geschreven formules waarmee u eenvoudiger complexe berekeningen en bewerkingen kunt uitvoeren met getallen, datums, tijd, tekst en meer. U krijgt later meer informatie over functies.

U ziet ook dat de kolomnaam [SalesAmount] is voorafgegaan door de tabel Sales waarin de kolom hoort. Deze naam wordt een volledig gekwalificeerde kolomnaam genoemd omdat deze de kolomnaam bevat die wordt voorafgegaan door de tabelnaam. Voor kolommen waarnaar in dezelfde tabel wordt verwezen, hoeft de tabelnaam niet in de formule te worden opgenomen, waardoor lange formules die naar veel kolommen verwijzen korter en gemakkelijker leesbaar kunnen worden. Het is echter een goed idee om de tabelnaam op te nemen in de formules voor metingen, zelfs wanneer u zich in dezelfde tabel bevindt.

Notitie

Als een tabelnaam spaties, gereserveerde trefwoorden of niet-toegestane tekens bevat, moet u de tabelnaam tussen enkele aanhalingstekens plaatsen. U moet ook tabelnamen tussen aanhalingstekens plaatsen als de naam tekens bevat buiten het alfanumerieke ANSI-tekenbereik, ongeacht of uw landinstelling de tekenset ondersteunt of niet.

Het is belangrijk dat uw formules de juiste syntaxis hebben. Als de syntaxis in de meeste gevallen niet juist is, wordt er een syntaxisfout geretourneerd. In andere gevallen is de syntaxis mogelijk juist, maar de geretourneerde waarden zijn mogelijk niet wat u verwacht. De DAX-editor in Power BI Desktop bevat een suggestiefunctie die wordt gebruikt om syntactisch juiste formules te maken door u te helpen de juiste elementen te selecteren.

Laten we een voorbeeldformule maken. Deze taak helpt u meer inzicht te krijgen in de syntaxis van de formule en hoe de functie suggesties in de formulebalk u kan helpen.

Taak: Een metingformule maken

  1. Download en open het Power BI Desktop-bestand Voorbeeld van Contoso Sales.

  2. Klik in de rapportweergave in de lijst met velden met de rechtermuisknop op de tabel Verkoop en selecteer vervolgens Nieuwe meting.

  3. Vervang meting in de formulebalk door een nieuwe metingsnaam in te voeren, verkoop vorig kwartaal.

  4. Typ na het gelijkteken de eerste paar letters CAL en dubbelklik vervolgens op de functie die u wilt gebruiken. In deze formule wilt u de functie CALCULATE gebruiken.

    U gebruikt de functie CALCULATE om de bedragen te filteren die we willen optellen met een argument dat we doorgeven aan de functie CALCULATE. Dit type functie wordt geneste functies genoemd. De functie CALCULATE heeft ten minste twee argumenten. De eerste is de expressie die moet worden geëvalueerd en de tweede is een filter.

  5. Na het haakje openen (voor de functie CALCULATE, typt u SUM gevolgd door een ander haakje openen (.

    Vervolgens geven we een argument door aan de functie SOM.

  6. Begin sal te typen en selecteer vervolgens Sales[SalesAmount], gevolgd door een haakje sluiten ).

    Met deze stap maakt u het eerste expressieargument voor de functie CALCULATE.

  7. Typ een komma (,) gevolgd door een spatie om het eerste filter op te geven en typ vervolgens PREVIOUSQUARTER.

    U gebruikt de functie PREVIOUSQUARTER time intelligence om SOM-resultaten te filteren op het vorige kwartaal.

  8. Na het haakje openen (voor de functie PREVIOUSQUARTER typt u Calendar[DateKey].

    De functie PREVIOUSQUARTER heeft één argument, een kolom met een aaneengesloten reeks datums. In ons geval is dat de kolom DateKey in de tabel Agenda.

  9. Sluit beide argumenten die worden doorgegeven aan de functie PREVIOUSQUARTER en de functie CALCULATE door twee haakjes sluiten )) te typen.

    De formule ziet er nu als volgt uit:

    Verkoop vorig kwartaal = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Selecteer het vinkje Vinkje in de formulebalk of druk op Enter om de formule te valideren en toe te voegen aan de tabel Sales.

Het is u gelukt. U hebt zojuist een complexe meting gemaakt met behulp van DAX. Wat deze formule doet, is de totale verkoop voor het vorige kwartaal berekenen, afhankelijk van de filters die in een rapport zijn toegepast. We kunnen bijvoorbeeld SalesAmount en de nieuwe meting Verkoop vorig kwartaal uit de tabel Verkoop in een gegroepeerd kolomdiagram plaatsen. Voeg vervolgens in de tabel Kalender Jaar toe als slicer en selecteer 2011. Voeg vervolgens QuarterOfYear toe als een andere slicer en selecteer 4, waarna we een grafiek als volgt krijgen:

Grafiek Verkoop en SalesAmount in het vorige kwartaal

Houd er rekening mee dat het voorbeeldmodel slechts een kleine hoeveelheid verkoopgegevens bevat van 1-1-2011 tot 1-19-2013. Als u een jaar of kwartaal selecteert waarin SalesAmount niet kan worden opgeteld, of als uw nieuwe meting geen verkoopgegevens voor het huidige of vorige kwartaal kan berekenen, worden er geen gegevens voor die periode weergegeven. Als u bijvoorbeeld 2011 selecteert voor Jaar en 1 voor QuarterOfYear, worden er geen gegevens weergegeven voor verkoop vorig kwartaal, omdat er geen gegevens zijn voor het vierde kwartaal van 2010.

U hebt kennisgemaakt met verschillende belangrijke aspecten van DAX-formules:

  • Deze formule bevat twee functies. PREVIOUSQUARTER, een time intelligence-functie, is genest als een argument dat wordt doorgegeven aan CALCULATE, een filterfunctie.

    DAX-formules kunnen maximaal 64 geneste functies bevatten. Het is onwaarschijnlijk dat een formule ooit zoveel geneste functies zou bevatten. In feite zou een dergelijke formule moeilijk zijn om te maken en fouten op te sporen, en het zou waarschijnlijk ook niet snel zijn.

  • In deze formule hebt u ook filters gebruikt. Filters beperken wat er wordt berekend. In dit geval hebt u één filter geselecteerd als argument, wat eigenlijk het resultaat is van een andere functie. U vindt later meer informatie over filters.

  • U hebt de functie CALCULATE gebruikt. Deze functie is een van de krachtigste functies in DAX. Wanneer u modellen maakt en complexere formules maakt, gebruikt u deze functie waarschijnlijk vaak. Hoewel verdere discussie over de functie CALCULATE buiten het bereik van dit artikel valt, moet u er, naarmate uw kennis van DAX groeit, speciale aandacht aan besteden.

Syntaxis QuickQuiz

  1. Wat doet deze knop op de formulebalk?

    Knopselectie

  2. Wat omsluit altijd een kolomnaam in een DAX-formule?

Aan het einde van dit artikel worden antwoorden gegeven.

Functions

Functies zijn vooraf gedefinieerde formules die berekeningen uitvoeren met behulp van specifieke waarden, argumenten genoemd, in een bepaalde volgorde of structuur. Argumenten kunnen andere functies zijn, een andere formule, expressie, kolomverwijzingen, getallen, tekst, logische waarden zoals WAAR of ONWAAR, of constanten.

DAX bevat de volgende categorieën functies: Datum en tijd, Time Intelligence, Informatie, Logisch, Wiskundig, Statistische, Tekst, Bovenliggende/Onderliggende functies en Andere functies. Als u bekend bent met functies in Excel-formules, zien veel van de functies in DAX er ongeveer als volgt uit; DAX-functies zijn echter uniek op de volgende manieren:

  • Een DAX-functie verwijst altijd naar een volledige kolom of tabel. Als u alleen bepaalde waarden uit een tabel of kolom wilt gebruiken, kunt u filters toevoegen aan de formule.

  • Als u berekeningen per rij wilt aanpassen, biedt DAX functies waarmee u de huidige rijwaarde of een gerelateerde waarde kunt gebruiken als een soort argument om berekeningen uit te voeren op basis van de context. Later krijgt u meer informatie over context.

  • DAX bevat veel functies die een tabel retourneren in plaats van een waarde. De tabel wordt niet weergegeven, maar wordt gebruikt voor het leveren van invoer aan andere functies. U kunt bijvoorbeeld een tabel ophalen en vervolgens de afzonderlijke waarden erin tellen of dynamische sommen berekenen voor gefilterde tabellen of kolommen.

  • DAX bevat verschillende time intelligence-functies. Met deze functies kunt u datumbereiken definiëren of selecteren en dynamische berekeningen uitvoeren op basis hiervan. U kunt bijvoorbeeld sommen voor parallelle perioden vergelijken.

  • Excel heeft een populaire functie, VERT.ZOEKEN. DAX-functies nemen geen cel- of celbereik als verwijzing zoals VERT.ZOEKEN in Excel. DAX-functies nemen een kolom of tabel als referentie. Houd er rekening mee dat u in Power BI Desktop werkt met een relationeel gegevensmodel. Het opzoeken van waarden in een andere tabel is eenvoudig en in de meeste gevallen hoeft u helemaal geen formules te maken.

    Zoals u kunt zien, kunnen functies in DAX u helpen krachtige formules te maken. We hebben alleen de basisbeginselen van functies aangeraakt. Naarmate uw DAX-vaardigheden toenemen, maakt u formules met behulp van veel verschillende functies. Een van de beste plekken om meer te weten te komen over elk van de DAX-functies vindt u in de DAX-functieverwijzing.

Functions QuickQuiz

  1. Wat verwijst een functie altijd naar?
  2. Kan een formule meer dan één functie bevatten?
  3. Welke categorie functies zou u gebruiken om twee teksttekenreeksen samen te voegen in één tekenreeks?

Aan het einde van dit artikel worden antwoorden gegeven.

Context

Context is een van de belangrijkste DAX-concepten die u moet begrijpen. Er zijn twee typen context in DAX: rijcontext en filtercontext. We kijken eerst naar rijcontext.

Rijcontext

Rijcontext is het gemakkelijkst te zien als de huidige rij. Deze is van toepassing wanneer een formule een functie heeft waarmee filters worden toegepast om één rij in een tabel te identificeren. De functie past inherent een rijcontext toe voor elke rij van de tabel waarvoor deze wordt gefilterd. Dit type rijcontext is meestal van toepassing op metingen.

Filtercontext

Filtercontext is iets moeilijker te begrijpen dan rijcontext. U kunt de filtercontext het eenvoudigst beschouwen als: een of meer filters die worden toegepast in een berekening die een resultaat of waarde bepaalt.

Filtercontext bestaat niet in plaats van rijcontext; In plaats daarvan geldt dit naast rijcontext. Als u bijvoorbeeld de waarden die u wilt opnemen in een berekening verder wilt beperken, kunt u een filtercontext toepassen, die niet alleen de rijcontext specificeert, maar ook een bepaalde waarde (filter) in die rijcontext specificeert.

Filtercontext is eenvoudig te zien in uw rapporten. Wanneer u Bijvoorbeeld TotalCost toevoegt aan een visualisatie en vervolgens Year en Region toevoegt, definieert u een filtercontext waarmee een subset met gegevens wordt geselecteerd op basis van een bepaald jaar en een bepaalde regio.

Waarom is filtercontext zo belangrijk voor DAX? U hebt gezien dat filtercontext kan worden toegepast door velden toe te voegen aan een visualisatie. Filtercontext kan ook worden toegepast in een DAX-formule door een filter te definiëren met functies zoals ALL, RELATED, FILTER, CALCULATE, by relationships en andere metingen en kolommen. Laten we bijvoorbeeld eens kijken naar de volgende formule in een meting met de naam Winkelverkoop:

Meting Verkoop winkel

Om deze formule beter te begrijpen, kunnen we deze opsplitsen, net als bij andere formules.

Deze formule bevat de volgende syntaxiselementen:

A. De naam van de meting, Winkelverkoop.

B. De gelijktekenoperator (=), die het begin van de formule aangeeft.

C. De functie CALCULATE , waarmee een expressie als argument wordt geëvalueerd, in een context die wordt gewijzigd door de opgegeven filters.

D. Haakjes (), die een expressie met een of meer argumenten omsluiten.

E. Een meting [Totale verkoop] in dezelfde tabel als een expressie. De meting Totale verkoop heeft de formule :=SOM(Sales[SalesAmount]).

F. Een komma (,), waarmee het eerste expressieargument van het filterargument wordt gescheiden.

G. De volledig gekwalificeerde kolom waarnaar wordt verwezen, Channel[ChannelName]. Dit is onze rijcontext. Elke rij in deze kolom geeft een kanaal op, zoals Store of Online.

H. De specifieke waarde, Opslaan, als filter. Dit is onze filtercontext.

Deze formule zorgt ervoor dat alleen verkoopwaarden die zijn gedefinieerd door de meting Totale verkoop alleen worden berekend voor rijen in de kolom Channel[ChannelName], waarbij de waarde Store wordt gebruikt als filter.

Zoals u zich kunt voorstellen, heeft het kunnen definiëren van filtercontext binnen een formule enorme en krachtige mogelijkheden. De mogelijkheid om slechts naar een bepaalde waarde in een gerelateerde tabel te verwijzen, is slechts één voorbeeld. Maak u geen zorgen als u de context niet meteen volledig begrijpt. Wanneer u uw eigen formules maakt, krijgt u meer inzicht in context en waarom dit zo belangrijk is in DAX.

Context QuickQuiz

  1. Wat zijn de twee typen context?
  2. Wat is filtercontext?
  3. Wat is rijcontext?

Aan het einde van dit artikel worden antwoorden gegeven.

Samenvatting

Nu u basiskennis hebt van de belangrijkste concepten in DAX, kunt u zelf DAX-formules voor metingen maken. DAX kan inderdaad een beetje lastig zijn om te leren, maar er zijn veel resources beschikbaar voor u. Nadat u dit artikel hebt doorgelezen en hebt geëxperimenteert met enkele van uw eigen formules, kunt u meer informatie vinden over andere DAX-concepten en -formules waarmee u uw eigen zakelijke problemen kunt oplossen. Er zijn veel DAX-resources beschikbaar voor u; Het belangrijkste is de DAX-verwijzing (Data Analysis Expressions).

Omdat DAX al enkele jaren aanwezig is in andere Microsoft BI-hulpprogramma's zoals Power Pivot- en Analysis Services-modellen in tabelvorm, zijn er veel geweldige informatiebronnen beschikbaar. U vindt meer informatie in boeken, whitepapers en blogs van zowel Microsoft als toonaangevende BI-professionals. Het DAX Resource Center is ook een geweldige plek om te beginnen.

QuickQuiz-antwoorden

Syntaxis:

  1. Valideert en voert de meting in het model in.
  2. Vierkante haken [].

Functies:

  1. Een tabel en een kolom.
  2. Ja. Een formule kan maximaal 64 geneste functies bevatten.
  3. Tekstfuncties.

Context:

  1. Rijcontext en filtercontext.
  2. Een of meer filters in een berekening die één waarde bepaalt.
  3. De huidige rij.