Snelstartgids: informatie over de grondbeginselen van DAX in 30 minuten

Van toepassing op
Excel voor Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Deze snelstartgids is bedoeld voor gebruikers die nog niet bekend zijn met Power Pivot in Excel of met tabellaire modelprojecten die in SQL Server Data Tools zijn gemaakt. De snelstartgids biedt een snelle en gemakkelijke inleiding tot het gebruiken van DAX (Data Analysis Expressions) om een aantal basisproblemen met gegevensmodellen en analyses op te lossen. Dit onderwerp bevat conceptuele informatie, een reeks taken die u kunt uitvoeren en een aantal quizzen om te testen wat u hebt geleerd. Na voltooiing van dit onderwerp hebt u een goed inzicht in de basisconcepten die in DAX worden toegepast.

Wat is DAX?

DAX is een verzameling functies, operatoren en constanten die in een formule of expressie kunnen worden gebruikt om één of meerdere waarden te berekenen en te retourneren. Simpel gezegd, met DAX kunt u nieuwe informatie genereren uit de gegevens die zich reeds in uw model bevinden.

Waarom DAX zo is belangrijk?

Het is niet moeilijk om een werkmap te maken en er gegevens in te importeren. En u kunt ook zonder DAX-formules te gebruiken draaitabellen of draaigrafieken maken die belangrijke informatie bieden. Maar wat doet u als u kritieke verkoopgegevens van verschillende productcategorieën en in verschillende perioden moet analyseren? Of als u belangrijke voorraadgegevens uit verschillende tabellen verspreid over verschillende gegevensbronnen moet combineren? DAX-formules bieden niet alleen deze voorzieningen, maar ook veel andere belangrijke mogelijkheden. Als u weet hoe u effectieve DAX-formules kunt maken, kunt u optimaal gebruikmaken van de beschikbare gegevens. Wanneer u beschikt over de informatie die u nodig hebt, kunt u beginnen met het oplossen van de echte problemen die van invloed zijn op het bedrijfsresultaat. Dat noemen we Business Intelligence, en DAX kan u er bij helpen.

Vereisten

U bent wellicht al redelijk bekend met het maken van formules in Microsoft Excel. Deze kennis kan u van pas komen bij het leren begrijpen van DAX, maar zelfs als u geen ervaring met Excel-formules hebt, kunt u aan de hand van de hieronder beschreven concepten aan de slag te gaan met het maken van DAX-formules en direct de echte BI-problemen oplossen.

We richten ons met name op het begrijpen van de DAX-formules die in berekeningen worden gebruikt. U moet al bekend zijn met de basisbegrippen van berekende kolommen en eenheden (ook wel berekende velden genoemd), die beide worden beschreven in de Help van Power Pivot. U moet ook bekend zijn met Power Pivot in de ontwerpomgevingen en -functies van Excel.

Voorbeeldwerkmap

De beste manier om te leren werken met DAX is het maken van enkele basisformules, deze toe te passen op enkele echte praktijkgegevens en vervolgens de resultaten te bekijken. In de voorbeelden en taken in dit onderwerp wordt de werkmap Contoso Sample DAX Formulas.xlsx gebruikt. U kunt de werkmap downloaden via http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Download de werkmap naar uw computer, open de werkmap en open vervolgens het Power Pivot-venster.

U kunt nu beginnen.

We bespreken DAX in de context van drie zeer belangrijke fundamentele concepten: syntax, functies en context. Natuurlijk zijn er andere belangrijke concepten in DAX, maar als u deze drie concepten begrijpt, beschikt u over de beste basis voor het ontwikkelen van uw DAX-vaardigheden.

Syntaxis

Voordat u uw eigen formules gaat maken, kijken we eerst hoe de syntaxis van de DAX-formules is opgebouwd. De syntaxis bevat diverse elementen waaruit een formule is opgebouwd, met andere woorden: hoe de formule wordt geschreven. Hieronder ziet u een eenvoudige DAX-formule die wordt gebruikt om nieuwe gegevens (waarden) te maken voor elke rij in de berekende kolom Margin, in de tabel FactSales: (de kleuren van de formuletekst zijn alleen voor illustratieve doeleinden)

Formule voor berekende kolom

De syntaxis van deze formule bevat de volgende elementen:

  1. Het gelijkteken (=) geeft het begin van de formule aan en wanneer deze formule wordt berekend, wordt er een uitkomst of een waarde geretourneerd. Alle formules waarmee een waarde wordt berekend, beginnen met een gelijkteken.
  2. De kolom [SalesAmount] waarnaar wordt verwezen, bevat de waarden waarvan we een waarde willen aftrekken. Een kolomverwijzing in een formule wordt altijd ingesloten door vierkante haakjes []. In tegenstelling tot Excel-formules, waarin naar een cel wordt verwezen, verwijst een DAX-formule altijd naar een kolom.
  3. De wiskundige operator (-), het minteken.
  4. De kolom [TotalCost] waarnaar wordt verwezen, bevat de waarden die we van de waarden in de kolom [SalesAmount] willen aftrekken.

Om te bepalen hoe u een DAX-formule moet lezen, is het handig om elk van de elementen te ontleden in de taal die u elke dag spreekt. U kunt deze formule bijvoorbeeld lezen als:

Bereken (=) in theFactSalestable voor elke rij in de berekende kolom Margin een waarde door de waarden (-) in de kolom [TotalCost] af te trekken van de waarden in de kolom [SalesAmount].

Laten we eens kijken naar een ander type formule, dat wordt gebruikt in een meting:

Formule voor berekende kolom

De syntaxis van deze formule bevat de volgende elementen:

  1. De naam van de meting, Som van verkoopbedrag. Formules voor metingen kunnen de naam van de meting bevatten, gevolgd door een dubbele punt, gevolgd door de berekeningsformule.
  2. Het gelijkteken (=) geeft het begin van de berekeningsformule aan. Wanneer de berekening is voltooid, wordt er een resultaat geretourneerd.
  3. De functie SUM telt alle getallen in de kolom [SalesAmount] bij elkaar op. Functies worden later besproken.
  4. Ronde haakjes () omsluiten één of meer argumenten. Voor all functies is ten minste één argument vereist. Een argument geeft een waarde door aan een functie.
  5. De tabel FactSales waarnaar wordt verwezen.
  6. De kolom [SalesAmount] waarnaar wordt verwezen in de tabel FactSales. Op basis van dit argument weet de functie SUM voor welke kolom een SUM (totaal) moet worden berekend.

U kunt deze formule lezen als:

Bereken (=) voor de measurenamed Sum of Sales Amount de SOM van de waarden in de kolom [SalesAmount] in theFactSalestable.

Als deze waarde wordt geplaatst in het neerzetgebied van een draaitabelveld, worden met deze meting waarden berekend en geretourneerd die in elke cel in de draaitabel worden gedefinieerd, bijvoorbeeld Cell Phones in the USA.

U ziet dat deze formule op een aantal punten verschilt van de formule die we voor de berekende kolom Margin hebben gebruikt. Het meest opvallende is de introductie van de functie SUM. Functies zijn vooraf geschreven formules waarmee u niet alleen eenvoudiger complexe berekeningen kunt uitvoeren maar ook getallen, datums, tijden en tekst kunt manipuleren, en nog veel meer. Functies worden later besproken.

U ziet dat, in tegenstelling tot de berekende kolom Margin hiervoor, de kolom [SalesAmount] wordt voorafgegaan door de tabel FactSales, waartoe de kolom behoort. Een kolomnaam die wordt voorafgegaan door de tabelnaam wordt een volledig gekwalificeerde kolomnaam genoemd. Voor kolommen waarnaar in dezelfde tabel wordt verwezen, is het niet nodig om de tabelnaam in de formule op te nemen. Hierdoor zijn lange formules waarin naar veel kolommen wordt verwezen korter, en dus gemakkelijker te lezen. Het is echter een goede gewoonte om de tabelnaam altijd op te nemen in maateenheidformules, zelfs als het veld zich in dezelfde tabel bevindt.

Opmerking

Als de naam van een tabel spaties, gereserveerde sleutelwoorden of niet-toegestane tekens bevat, moet u de tabelnaam tussen enkele aanhalingstekens zetten. U moet tevens tabelnamen tussen aanhalingstekens zetten als de naam tekens bevat die buiten het alfanumerieke ANSI-tekenbereik vallen, ongeacht of uw landinstelling het teken ondersteunt.

Het is heel belangrijk dat de syntaxis van uw formules correct is. In de meeste gevallen wordt, als de syntaxis niet correct is, een syntaxisfout geretourneerd. Het is ook mogelijk dat de syntaxis wel juist is, maar geretourneerde waarden niet aan uw verwachtingen voldoen. Power Pivot (en SQL Server Data Tools) bevat IntelliSense, een functie die u helpt de juiste elementen te selecteren, zodat de formules die u maakt, syntactisch juist zijn.

We gaan nu een eenvoudige formule maken. Deze taak is bedoeld om de syntaxis van formules nog beter te leren begrijpen en te zien hoe de functie IntelliSense op de formulebalk u hierbij kan helpen.

Taak: maak een eenvoudige formule voor een berekende kolom

  1. Als het Power Pivot-venster nog niet is geopend, klikt u in Excel op het lint van Power Pivot op Power Pivot-venster.
  2. Klik in het PowerPivot-venster op de tabel FabVerkoop (tabblad).
  3. Schuif naar de meest rechtse kolom en klik op Kolom toevoegen in de kolomkop.
  4. Klik op de formulebalk boven in het modelontwerpervenster.
    PowerPivot-formulebalk
    De cursor wordt nu weergegeven op de formulebalk. De formulebalk is de locatie waar u een formule voor een berekende kolom of een berekend veld kunt typen.
    Links van de formulebalk ziet u drie knoppen.
    Formulebalk
    Wanneer de aanwijzer actief is in de formulebalk, worden deze drie knoppen ook geactiveerd. De meest linkse knop, X, is een annuleringsknop. Klik op deze knop. De cursor wordt niet langer weergegeven op de formulebalk, evenmin als de annuleringsknop en de controletekenknop. Ga door en klik opnieuw op de formulebalk. De annuleringsknop en de controletekenknop worden opnieuw weergegeven. Dit betekent u kunt beginnen met het invoeren van een formule.
    De controletekenknop is de knop voor het controleren van de formule. Zolang u geen formule hebt ingevoerd, doet deze knop niets. We komen hier later kort op terug.
    Klik op de knop Fx. U ziet dat er een nieuw dialoogvenster wordt weergegeven, het dialoogvenster Functie invoegen. Het dialoogvenster Functie invoegen is de eenvoudigste manier om te beginnen met het invoeren van een DAX-formule. We zullen later, wanneer we een meting hebben gemaakt, een functie aan een formule toevoegen, maar voorlopig hoeft u geen functie aan uw berekende-kolomformule toe te voegen. Sluit nu het dialoogvenster Functie invoegen.
  5. Typ in de formulebalk een gelijkteken (=) en typ daarna een vierkante openingshaak [. Er wordt een klein venster weergegeven met daarin alle kolommen van de tabel FactSales. Dit is IntelliSense in actie.
    Omdat berekende kolommen altijd in de actieve tabel worden gemaakt, hoeft u de kolomnaam niet te laten voorafgaan door de tabelnaam. Schuif nu omlaag en dubbelklik op [SalesQuantity]. U kunt ook naar de kolomnaam schuiven en vervolgens op Tab drukken.
    De cursor is nu rechts van [SalesQuantity] actief.
  6. Typ een spatie, gevolgd door een minteken, en typ daarna nog een spatie.
  7. Typ nu nog een vierkante openingshaak [. Selecteer deze keer de kolom [ReturnQuantity] en druk op Enter.
    Als er een foutberichtwordt weergegeven, bekijkt u zorgvuldig de syntaxis van uw formule. Vergelijk indien nodig uw syntaxis met die van de formule in de eerder beschreven berekende kolom Margin.
    Nadat u op Enter hebt gedrukt om de formule te voltooien, wordt het woord Berekenen weergegeven op de statusbalk onder in het Power Pivot-venster. Dit gaat snel, zelfs als u zojuist nieuwe waarden voor meer dan drie miljoen rijen hebt berekend.
  8. Klik met de rechtermuisknop op de kolomkop en wijzig de naam van de kolom in NetSales.

Klaar! U hebt zojuist een eenvoudige maar zeer krachtige DAX-formule gemaakt. De NetSales-formule berekent voor elke rij in de tabel FactSales een waarde door de waarde in de kolom [ReturnQuantity] af te trekken van de waarde in de kolom [SalesQuantity]. U ziet dat we de nadruk leggen op “voor elke rij”. Dit is een verwijzing naar een ander zeer belangrijk concept in DAX, de rijcontext. De rijcontext worden later besproken.

Wanneer u een operator in een DAX-formule typt, is het zeer belangrijk dat u rekening houdt met het gegevenstype in de argumenten die u gebruikt. Als u bijvoorbeeld de volgende formule = 1 & 2 typt, is de geretourneerde waarde de tekstwaarde 12. De operator En-teken (&) is namelijk bedoeld voor samenvoeging van tekst. DAX interpreteert deze formule als volgt: Bereken een resultaat door de waarde 1 als tekst te nemen en waarde 2 toe te voegen als tekst. Als u nu = 1 + 2 typt, leest DAX deze formule als: Bereken het resultaat door de numerieke waarde 1 te nemen en daar de numerieke waarde 2 aan toe te voegen. Het resultaat is natuurlijk "3", een numerieke waarde. DAX berekent de resulterende waarden afhankelijk van de operator in de formule, niet op basis van het gegevenstype van de kolommen die in het argument worden gebruikt. Gegevenstypen in DAX zijn zeer belangrijk, maar vallen buiten het bereik van deze snelstartgids. Zie de DAX-naslaginformatie (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) in Books Online voor meer informatie over gegevenstypen en operatoren in DAX-formules.

We gaan nu een andere formule maken. Dit keer maakt u een meting door de formule te typen en door IntelliSense te gebruiken. Het is niet erg als u de formule niet goed begrijpt. Het gaat er hier om dat u leert hoe u een formule kunt maken waarin verschillende elementen samen in de correcte syntaxis worden gebruikt.

Taak: een maateenheidformule maken

  1. Klik in de tabel FactSales op een lege cel ergens in het berekeningsgebied. Dit is het gebied met lege cellen direct onder een tabel in het Power Pivot-venster.

PowerPivot-berekeningsgebied

  1. Typ de naam Previous Quarter Sales: in de formulebalk.
  2. Typ het gelijkteken = als eerste teken in de berekeningsformule.
  3. Typ de eerste drie letters, CAL, en dubbelklik op de functie u wilt gebruiken. In deze formule wilt u de functie CALCULATE gebruiken.
  4. Typ een rond openingshaakje ( om hierachter de argumenten te typen die aan de functie CALCULATE moeten worden doorgegeven).
    Nadat u het ronde openingshaakje hebt getypt, geeft IntelliSense de vereiste argumenten voor de functie CALCULATE weer. Een stukje verderop zullen we meer vertellen over argumenten.
  5. Typ de eerste letters van de tabel FactSales en dubbelklik in de vervolgkeuzelijst op FactSales[Sales].
  6. Typ een komma (,) om het eerste filter op te geven en typ vervolgens PRE. Dubbelklik hierna op de functie PREVIOUSQUARTER.
    Nadat u de functie PREVIOUSQUARTER hebt geselecteerd, wordt er nog een rond openingshaakje weergegeven. Dit betekent dat er nog een ander argument is vereist, dit keer voor de functie PREVIOUSQUARTER.
  7. Typ de eerste drie letters, Dim, en dubbelklik op DimDate[DateKey].
  8. Sluit zowel het argument dat aan de functie PREVIOUSQUARTER wordt doorgegeven als de functie CALCULATE af door twee ronde afsluithaakjes te typen: )).
    De formule ziet er nu als volgt uit:
    Previous Quarter Sales:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
  9. Klik op de knop voor het controleren van de formule op de formulebalk, om de formule te valideren. Als er een foutbericht wordt weergegeven, controleert u alle elementen van de syntaxis.

Het is u gelukt. U hebt zojuist een meting met DAX gemaakt, en ook nog een niet al te gemakkelijk ook. Deze formule berekent de verkooptotalen voor het vorige kwartaal, afhankelijk van de filters die in een draaitabel of draaigrafiek worden toegepast.

U hebt nu leren werken met diverse belangrijkste aspecten van DAX-formules. U hebt een formule gemaakt met twee functies. Merk op dat de functie PREVIOUSQUARTER is genest als argument voor de functie CALCULATE. DAX-formules kunnen maximaal 64 geneste functies bevatten. Het is niet waarschijnlijk dat u ooit een formule zult maken met zo veel geneste functies. Het is niet alleen zeer moeilijk een dergelijke formule te maken en eventuele fouten er in te opsporen, maar de formule zal waarschijnlijk ook bepaald niet erg snel zijn.

In deze formule hebt u ook filters gebruikt. Een filter zorgt voor een begrenzing van wat er wordt berekend. In dit geval hebt u een filter geselecteerd als een argument, dat in feite een andere functie is. Filters worden later besproken.

Tot slot hebt u de functie CALCULATE gebruikt. Dit is een van de krachtigste functies in DAX. Bij het maken van gegevensmodellen en complexere formules zult u deze functie waarschijnlijk vaak gebruiken. Een bespreking van de functie CALCULATE valt buiten het kader van deze QuickStart, maar we raden u aan naarmate u meer met DAX gaat werken met name aandacht aan deze functie te besteden.

Opmerking

Als u tijdintelligente functies in DAX-formules wilt gebruiken, moet u een unieke datumkolom opgeven in het dialoogvenster Als datumtabel markeren. In de werkmap Contoso DAX Formula Samples.xlsx wordt de kolom DateKey als unieke datumkolom geselecteerd in de tabel DimDate.

Extra punten

U vraagt zich wellicht af wat de eenvoudigste DAX-formule is die u kunt maken. Welnu, dat is "de formule die u niet zelf hoeft te maken". En dat is precies wat u kunt doen door een standaard aggregatiefunctie in een meting te gebruiken. In vrijwel elk gegevensmodel worden filters en berekeningen toegepast op geaggregeerde gegevens. Zo werd eerder in dit onderwerp de functie SUM in de meting Sum of Sales Amount gebruikt om alle getallen in een bepaalde kolom op te tellen. DAX bevat tevens diverse andere functies waarmee waarden kunnen worden geaggregeerd. Met de functie AutoSum kunt u aan de hand van standaardaggregaties automatisch formules maken.

Taak voor extra punten: maak een maateenheidformule met de functie AutoSum

  1. Schuif in de tabel FactSales naar de kolom ReturnQuantity en klik op de kolomkop om de hele kolom te selecteren.
  2. Klik op het lint op het tabblad Start in de groep Berekeningen op de knop AutoSom .

AutoSom in PowerPivot

Klik op de pijl-omlaag naast AutoSom en klik vervolgens op Average (let op de andere standaardaggregatiefuncties die u kunt gebruiken).

Er wordt onmiddellijk een nieuwe meting gemaakt met de naam Average of ReturnQuantity: gevolgd door de formule =AVERAGE([ReturnQuantity]).

Was dat eenvoudig of niet? Natuurlijk zijn niet alle formules die u kunt gebruiken zo eenvoudig. Maar gelukkig kunt u met de functie AutoSum aan de hand van standaard aggregatieberekeningen snel en eenvoudig formules maken.

U hebt nu een redelijk goed inzicht in de syntaxis die in DAX-formules wordt gebruikt. U hebt tevens kennis gemaakt met sommige zeer interessante functies zoals IntelliSense en AutoSum, waarmee u snel en eenvoudig accurate formules kunt maken. Natuurlijk is er nog veel meer dat u kunt leren over de syntaxis. De DAX-naslag of SQL Books Online zijn elk een goede bron van informatie als u meer wilt weten.

QuickQuiz over syntaxis

  1. Wat is de functie van deze knop op de formulebalk?
    Functieknop
  2. Waardoor wordt een kolomnaam in een DAX-formule altijd omsloten?
  3. Hoe zou u een formule schrijven voor het volgende:
    Bereken in de tabel DimProduct voor elke rij in de berekende kolom UnitMargin een waarde door waarden in de kolom UnitCost af te trekken van waarden in de kolom UnitPrice?

De antwoorden worden gegeven aan het eind van dit onderwerp.

Functies

Functies zijn vooraf gedefinieerde formules die berekeningen uitvoeren met specifieke waarden (de argumenten) die in een bepaalde volgorde of structuur zijn opgegeven. De argumenten kunnen andere functies, een andere formule, kolomverwijzingen, getallen, tekst, logische waarden zoals TRUE of FALSE, of constanten zijn.

DAX bevat de volgende functiecategorieën: Datum en tijd, Informatie, Logisch, Wiskundig, Statistisch, Tekst en Tijdintelligente functies. Als u bekend bent met de functies in Excel-formules, zullen veel van de functies in DAX u bekend voorkomen. DAX-functies zijn echter op een aantal punten uniek:

  • Een DAX-functie verwijst altijd naar een complete kolom of een tabel. Als u alleen specifieke waarden van 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 als een soort argument kunt gebruiken om berekeningen uit te voeren die naar gelang de context variëren. Context wordt later besproken.
  • DAX bevat veel functies die een tabel retourneren als resultaat, in plaats van een waarde. De tabel wordt niet weergegeven, maar wordt gebruikt als invoer voor andere functies. U kunt bijvoorbeeld een tabel ophalen en vervolgens de unieke waarden in de tabel tellen, of dynamische totalen in gefilterde tabellen of kolommen berekenen.
  • DAX bevat een verscheidenheid aan tijdintelligente functies. Met deze functies kunt u een datumbereik definiëren of selecteren en op basis van daarvan dynamische berekeningen uitvoeren. U kunt bijvoorbeeld totalen vergelijken voor parallel lopende perioden.

Soms is het lastig om te weten welke functies u in een formule moet gebruiken. Power Pivot en de ontwerpfunctie voor tabellaire modellen in SQL Server Data Tools bevatten de functie Functie invoegen, een dialoogvenster waarin u functies per categorie kunt selecteren en waarin ook korte beschrijvingen voor elke functie worden gegeven.

Functie invoegen

We gaan nu een nieuwe formule maken met een functie die u selecteert met de functie Functie invoegen:

Taak: voeg met de functie Functie invoegen een functie toe aan een formule

  1. Schuif in de tabel FactSales naar de meest rechtse kolom en klik op Kolom toevoegen in de kolomkop.
  2. Typ een gelijkteken, =, in de formulebalk.
  3. Klik op de knop Functie invoegen . Functie invoegen Het dialoogvenster Functie invoegen wordt geopend.
  4. Klik in het dialoogvenster Functie invoegen op de keuzelijst Selecteer een categorie . Standaard is Alle geselecteerd; alle functies in de categorie Alle worden hieronder vermeld. Dat is een groot aantal functies, dus u zult de functies willen filteren om het type functie dat u zoekt eenvoudiger te kunnen vinden.
  5. Voor deze formule wilt u bepaalde gegevens ophalen die al in een andere tabel voorkomen. Daarvoor gaat u een functie in de categorie Filter gebruiken. Klik op de filtercategorie , schuif omlaag in Een functie selecteren en dubbelklik op de functie RELATED. Klik op OK om het dialoogvenster Functie invoegen te sluiten.
  6. Gebruik IntelliSense om de kolom DimChannel[ChannelName] te zoeken en te selecteren.
  7. Sluit de formule en druk op Enter.
  8. Nadat u op Enter hebt gedrukt om de formule te voltooien, wordt het woord Berekenen weergegeven op de statusbalk onder in het Power Pivot-venster. U hebt nu een nieuwe kolom gemaakt in de tabel FactSales, met kanaalinformatie uit de tabel DimChannel.
  9. Wijzig de naam van de kolom in Channel.
    Als het goed is, ziet uw formule er als volgt uit: =RELATED(DimChannel [ChannelName])

U hebt zojuist kennisgemaakt met een andere zeer belangrijke functie in DAX, namelijk de functie RELATED. Met de functie RELATED worden waarden uit een andere tabel geretourneerd. U kunt RELATED alleen gebruiken als er een relatie bestaat tussen de tabel waarin u zich bevindt en de tabel die de waarden bevat die u wilt ophalen. De functie RELATED biedt zeer veel mogelijkheden. In dit geval kunt u het verkoopkanaal voor elke verkoop in de tabel FactSales opnemen. U kunt de tabel DimChannel in de lijst met draaitabelvelden verbergen, waardoor alleen de belangrijkste informatie, die u echt nodig hebt, wordt weergegeven en u gemakkelijker kunt navigeren. Net als de hiervoor beschreven functie CALCULATE, is de functie RELATED een zeer belangrijke functie die u waarschijnlijk vaak zult gebruiken.

Zoals u kunt zien, kunnen de functies in DAX u helpen bij het maken van zeer krachtige formules. We hebben nu nog slechts de basisbeginselen van functies besproken. Naarmate uw DAX-vaardigheden verder toenemen, zult u steeds vaker formules met veel verschillende functies maken. Een van de beste bronnen van informatie over alle DAX-functies is de Naslag voor Data Analysis Expressions (DAX).

QuickQuiz over functies

  1. Waar verwijst een functie altijd naar?
  2. Kan een formule meer dan één functie bevatten?
  3. Welke functiecategorie zou u gebruiken voor het samenvoegen van twee tekstreeksen tot één tekstreeks?

De antwoorden worden gegeven aan het eind van dit onderwerp.

Context

Context is een van de belangrijkste concepten in DAX die u moet kennen. Er zijn twee verschillende soorten context in DAX: rijcontext en filtercontext. We zullen eerst de rijcontext bespreken.

Rijcontext

U kunt de rijcontext het beste zien als de huidige rij. Kunt u zich bijvoorbeeld nog de berekende kolom Margin herinneren die we eerder in het kader van de syntaxis hebben besproken? De formule =[SalesAmount] - [TotalCost] berekent voor elke rij in de tabel een waarde in de kolom Margin. De waarden voor elke rij worden berekend aan de hand van waarden in twee andere kolommen in dezelfde rij, [SalesAmount] en [TotalCost]. DAX kan de waarden voor elke rij in de kolom Margin berekenen omdat de rij context heeft: DAX neemt voor elke rij de waarden in de kolom [TotalCost] en trekt deze af van de waarden in de kolom [SalesAmount].

In de geselecteerde cel die hieronder wordt weergegeven, is de waarde $49,54 in de huidige rij berekend door de waarde $51,54 in de kolom [TotalCost] af te trekken van de waarde $101,08 in de kolom [SalesAmount].

Rijcontext in PowerPivot

Rijcontext is niet alleen van toepassing op berekende kolommen. De rijcontext is ook van toepassing wanneer een formule een functie heeft die filters toepast om één rij in een tabel te identificeren. De functie past inherent een rijcontext toe voor elke rij van de tabel die door de functie wordt gefilterd. Dit type rijcontext is meestal van toepassing op metingen.

Filtercontext

Filtercontext is iets ingewikkelder dan rijcontext. U kunt de filtercontext het beste zien als: een of meer filters die worden toegepast in een berekening die een resultaat of een waarde oplevert.

De filtercontext vervangt niet de rijcontext, maar wordt toegepast in aanvulling op de rijcontext. Als u bijvoorbeeld de waarden die u in een berekening wilt opnemen verder wilt beperken, kunt u een filtercontext toepassen waarmee niet alleen de rijcontext wordt gespecificeerd, maar ook een bepaalde waarde (filter) in die rijcontext.

De filtercontext is het meest duidelijk in draaitabellen. Wanneer u bijvoorbeeld TotalCost toevoegt aan het gebied Waarden en vervolgens Year en Region toevoegt aan de rij of kolommen, definieert u een filtercontext waardoor een subset van gegevens wordt geselecteerd op basis van een bepaald jaar en een bepaalde regio.

Waarom is de filtercontext zo belangrijk in DAX? Hoewel de filtercontext het gemakkelijkst kan worden toegepast door kolom- en rijlabels en slicers aan een draaitabel toe te voegen, kan de filtercontext ook in een DAX-formule worden toegepast door een filter te definiëren met behulp van functies zoals ALL, RELATED, FILTER, CALCULATE, door relaties en door andere metingen en kolommen. Bekijk de volgende formule in een meting met de naam StoreSales:

Formule

Deze formule is duidelijk ingewikkelder dan enkele andere formules die u hebt gezien. Om deze formule beter te begrijpen, kunnen we de formule ontleden, zoals we ook hebben gedaan met andere formules.

De syntaxis van deze formule bevat de volgende elementen:

  1. De naam van de meting, StoreSales, gevolgd door een dubbele punt :.
  2. Het gelijkteken (=) geeft het begin van de formule aan.
  3. De functie CALCULATE evalueert een expressie als een argument, in een context die door de opgegeven filters is aangepast.
  4. Ronde haakjes () omsluiten één of meer argumenten.
  5. Een meting [Sales] in dezelfde tabel als een expressie. De meting Sales heeft de formule: =SUM(FactSales [SalesAmount]).
  6. Alle filters worden gescheiden door een komma (,).
  7. De kolom waarnaar wordt verwezen en een bepaalde waarde, DimChannel[ChannelName] ="Store" als filter.

Deze formule zorgt ervoor dat alleen verkoopwaarden, gedefinieerd door de meting Verkoop, als filter, alleen worden berekend voor rijen in de kolom DimChannel[ChannelName], met de waarde "Store" als filter.

U kunt zich voorstellen dat het kunnen definiëren van filtercontext in een formule enorme en krachtige mogelijkheden biedt. Het kunnen verwijzen naar een bepaalde waarde in een gerelateerde tabel is slechts één voorbeeld hiervan. Het is niet erg als u het werken met context niet direct volledig begrijpt. Naarmate u vaker uw eigen formules maakt, zult u beter gaan begrijpen hoe context werkt en waarom het in DAX zo belangrijk is.

QuickQuiz over context

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

De antwoorden worden gegeven aan het eind van dit onderwerp.

Overzicht

Nu u kennis hebt van de belangrijkste concepten in DAX, kunt u zelf DAX-formules gaan maken voor berekende kolommen en metingen. DAX kan inderdaad een beetje lastig zijn om te leren, maar er zijn veel bronnen voor u beschikbaar. Nadat u dit onderwerp een aantal keer hebt gelezen en met enkele van uw eigen formules hebt geëxperimenteerd, krijgt u meer te weten over andere DAX-concepten en -formules die u kunnen helpen uw eigen problemen op te lossen. Er zijn veel DAX-bronnen beschikbaar in Power Pivot Help, SQL Server Books Online, technische documenten en blogs van zowel Microsoft als toonaangevende BI-professionals. De DAX Resource Center-wiki (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) is een prima plek om te beginnen. De Naslag voor Data Analysis Expressions (DAX) is ook een goede informatiebron. Sla het dan op in uw favorieten.

Het technische document DAX in the BI Tabular Model, dat kan worden gedownload (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), biedt een meer gedetailleerde beschrijving van de concepten die we hier hebben besproken en van veel andere geavanceerde concepten en formules. In dit document wordt ook dezelfde werkmap Contoso DAX Sample Formulas.xlsx gebruikt waarmee u al hebt gewerkt.

QuickQuiz-antwoorden

Syntaxis:

  1. Opent de functie Functie invoegen.
  2. Vierkante haken [].
  3. =[UnitPrice] - [UnitCost]

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 waarin één waarde wordt bepaalt.
  3. De huidige rij.