Deze snelstartgids is bedoeld voor gebruikers die Power Pivot in Excel of de tabellaire modelprojecten die in SQL Server Data Tools zijn gemaakt, nog niet kennen. 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 gaan ons specifiek richten op het begrijpen van DAX-formules die worden gebruikt in berekeningen. U moet al bekend zijn met de basisconcepten van zowel berekende kolommen als metingen (ook wel berekende velden genoemd), die beide worden beschreven in Power Pivot Help. U moet ook bekend zijn met de Power Pivot in de Ontwerpomgeving en hulpprogramma's 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 van 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)
De syntaxis van deze formule bevat de volgende elementen:
-
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.
-
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.
-
De wiskundige operator (-), het minteken.
-
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:
In de tabel FactSales berekent u voor elke rij in de berekende kolom Marge (=) een waarde door (-) waarden in de kolom [TotalCost] af te trekken van de waarden in de kolom [SalesAmount].
Laten we eens kijken naar een ander type formule, een formule die wordt gebruikt in een meting:
De syntaxis van deze formule bevat de volgende elementen:
-
De metingnaam Som van verkoopbedrag. Formules voor metingen kunnen de metingnaam bevatten, gevolgd door een dubbele punt, gevolgd door de berekeningsformule.
-
Het gelijkteken (=) geeft het begin van de berekeningsformule aan. Wanneer de berekening is voltooid, wordt er een resultaat geretourneerd.
-
De functie SUM telt alle getallen in de kolom [SalesAmount] bij elkaar op. Functies worden later besproken.
-
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.
-
De tabel FactSales waarnaar wordt verwezen.
-
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:
Voor de meting met de naam Som van verkoopbedrag berekent u (=) de SOM van waarden in de kolom [ SalesAmount ] in de tabel FactSales.
Wanneer deze meting in de neerzetzone Waarden in een lijst met draaitabelvelden wordt geplaatst, worden waarden berekend en geretourneerd die zijn gedefinieerd door elke cel in de draaitabel, bijvoorbeeld Mobiele telefoons in de VS.
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 raadzaam om altijd de tabelnaam op te nemen in uw metingformules, zelfs wanneer u 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) beschikken over 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
-
Als u zich nog niet in het Power Pivot-venster bevindt, klikt u in Excel op het lint Power Pivot op Power Pivot venster.
-
Klik in het Power Pivot-venster op het tabblad van de tabel FactSales.
-
Schuif naar de meest rechtse kolom en klik op Kolom toevoegen in de kolomkop.
-
Klik op de formulebalk boven in het modelontwerpervenster.
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.
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 voegen een functie toe aan een formule wanneer we iets later een meting maken, maar voorlopig hoeft u geen functie toe te voegen aan uw berekende kolomformule. Sluit nu het dialoogvenster Functie invoegen.
-
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.
-
Typ een spatie, gevolgd door een minteken, en typ daarna nog een spatie.
-
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.
-
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.
Iets wat echt belangrijk is om te begrijpen wanneer u een operator in een DAX-formule typt, is het gegevenstype in de argumenten die u gebruikt. Als u bijvoorbeeld de volgende formule = 1 & 2 typt, is de geretourneerde waarde een tekstwaarde van '12'. Dit komt doordat de operator ampersand (&) voor tekstsamenvoeging is. DAX interpreteert deze formule als gelezen: Een resultaat berekenen door de waarde 1 als tekst te nemen en waarde 2 als tekst toe te voegen. Als u nu = 1 + 2 typt, leest DAX deze formule als: Een resultaat berekenen door de numerieke waarde 1 te nemen en de numerieke waarde 2 toe te voegen. Het resultaat is natuurlijk '3', een numerieke waarde. DAX berekent resulterende waarden, afhankelijk van de operator in de formule, niet op basis van het gegevenstype van kolommen dat in het argument wordt gebruikt. Gegevenstypen in DAX zijn erg belangrijk, maar vallen buiten het bereik van deze snelstartgids. Zie de DAX-verwijzing (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) in Boeken Online voor meer informatie over gegevenstypen en operators in DAX-formules.
We gaan nu een andere formule maken. Deze 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 metingsformule maken
-
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.
-
Typ de naam Previous Quarter Sales: in de formulebalk.
-
Typ het gelijkteken = als eerste teken in de berekeningsformule.
-
Typ de eerste drie letters, CAL, en dubbelklik op de functie u wilt gebruiken. In deze formule wilt u de functie CALCULATE gebruiken.
-
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.
-
Typ de eerste paar letters van de tabel FactSales en dubbelklik vervolgens in de vervolgkeuzelijst op FactSales[Sales].
-
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.
-
Typ de eerste drie letters, Dim, en dubbelklik op DimDate[DateKey].
-
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]))
-
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 gemaakt met BEHULP van DAX, en dat is niet gemakkelijk. Met deze formule wordt de totale verkoop voor het vorige kwartaal berekend, afhankelijk van de filters die zijn toegepast in een draaitabel of draaigrafiek.
U hebt nu leren werken met diverse belangrijkste aspecten van DAX-formules. U hebt een formule gemaakt met twee functies. U ziet dat de functie PREVIOUSQUARTER is genest als een argument dat wordt doorgegeven aan 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 met behulp van een standaardaggregatiefunctie in een meting. In vrijwel elk gegevensmodel worden filters en berekeningen toegepast op geaggregeerde gegevens. De functie SOM in de meting Som van verkoopbedrag die u eerder hebt gezien, wordt bijvoorbeeld 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.
Extra tegoedtaak: een metingformule maken met behulp van de functie AutoSom
-
Schuif in de tabel FactSales naar de kolom ReturnQuantity en klik op de kolomkop om de hele kolom te selecteren.
-
Klik op het tabblad Start op het lint in de groep Berekeningen op de knop AutoSom .
Klik op de pijl-omlaag naast AutoSom en klik vervolgens op Gemiddelde (let op de andere standaardaggregatiefuncties die u ook 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
-
Wat doet deze knop op de formulebalk?
-
Waardoor wordt een kolomnaam in een DAX-formule altijd omsloten?
-
Hoe schrijft u een formule voor het volgende:
In de tabel DimProduct berekent u voor elke rij in de berekende kolom UnitMargin een waarde door waarden in de kolom UnitCost af te trekken van de waarden in de kolomUnitPrice?
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 categorieën functies: Datum en tijd, Informatie, Logische, Wiskundige, Statistische, Tekst- en Time Intelligence-functies. Als u bekend bent met functies in Excel-formules, zien veel van de functies in DAX er ongeveer als u uit. DAX-functies zijn echter uniek op de volgende manieren:
-
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 moeilijk om te weten welke functies u mogelijk 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 kunt selecteren op categorie en korte beschrijvingen voor elke functie bevat.
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
-
Schuif in de tabel FactSales naar de meest rechtse kolom en klik vervolgens in de kolomkop op Kolom toevoegen.
-
Typ een gelijkteken, =, in de formulebalk.
-
Klik op de knop Functie invoegen . Hiermee wordt het dialoogvenster Functie invoegen geopend.
-
Klik in het dialoogvenster Functie invoegen op de keuzelijst Een categorie selecteren . Standaard is Alles geselecteerd en worden alle functies in de categorie Alle hieronder weergegeven. Dat is een groot aantal functies, dus u zult de functies willen filteren om het type functie dat u zoekt eenvoudiger te kunnen vinden.
-
Voor deze formule wilt u bepaalde gegevens retourneren die al in een andere tabel aanwezig zijn. Hiervoor gebruikt u een functie in de categorie Filter. Ga verder en klik op de categorie Filter . Schuif vervolgens in Een functie selecteren omlaag en dubbelklik op de functie RELATED. Klik op OK om het dialoogvenster Functie invoegen te sluiten.
-
Gebruik IntelliSense om de kolom DimChannel[ChannelName] te zoeken en te selecteren.
-
Sluit de formule en druk op Enter.
-
Nadat u op Enter hebt gedrukt om de formule te voltooien, wordt het woord Berekenen op de statusbalk onder in het Power Pivot-venster weergegeven. U hebt nu een nieuwe kolom gemaakt in de tabel FactSales, met kanaalinformatie uit de tabel DimChannel.
-
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, 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 plaatsen voor meer informatie over alle DAX-functies is in de Naslaginformatie over Data Analysis Expressions (DAX).
QuickQuiz over functies
-
Waar verwijst een functie altijd naar?
-
Kan een formule meer dan één functie bevatten?
-
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 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 filtercontext het eenvoudigst kan worden toegepast door kolom- en rijlabels en slicers toe te voegen aan een draaitabel, kan filtercontext ook worden toegepast in een DAX-formule door een filter te definiëren met functies zoals ALL, RELATED, FILTER, CALCULATE, by relationships en door andere metingen en kolommen. Laten we bijvoorbeeld de volgende formule bekijken in een meting met de naam StoreSales:
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:
-
De metingnaam StoreSales, gevolgd door een dubbele punt :.
-
Het gelijkteken (=) geeft het begin van de formule aan.
-
De functie CALCULATE evalueert een expressie als een argument, in een context die door de opgegeven filters is aangepast.
-
Ronde haakjes () omsluiten één of meer argumenten.
-
Een meting [Verkoop] in dezelfde tabel als een expressie. De meting Verkoop heeft de formule=SOM(FactSales[SalesAmount]).
-
Alle filters worden gescheiden door een komma (,).
-
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 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
-
Wat zijn de twee typen context?
-
Wat is filtercontext?
-
Wat is rijcontext?
De antwoorden worden gegeven aan het eind van dit onderwerp.
Overzicht
Nu u een basiskennis hebt van de belangrijkste concepten in DAX, kunt u zelf BEGINNEN met het maken van DAX-formules 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 paar keer hebt doorgelezen en hebt geëxperimenteert met een paar van uw eigen formules, kunt u meer te weten komen over andere DAX-concepten en -formules die u kunnen helpen bij het oplossen van uw eigen zakelijke problemen. Er zijn veel DAX-resources beschikbaar in Power Pivot Help, SQL Server Books Online, whitepapers 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 goede plek om te beginnen. De DAX-verwijzing (Data Analysis Expressions) is ook een uitstekende resource. Sla deze op in uw Favorieten.
Het technische document DAX in the BI Tabular Model, beschikbaar als download (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:
-
Opent de functie Functie invoegen.
-
Vierkante haken [].
-
=[UnitPrice] - [UnitCost]
Functies:
-
Een tabel en een kolom.
-
Ja. Een formule kan maximaal 64 geneste functies bevatten.
Context:
-
Rijcontext en filtercontext.
-
Een of meer filters in een berekening waarin één waarde wordt bepaalt.
-
De huidige rij.