Få grundlæggende oplysninger om DAX i Power BI Desktop

Brugere, der ikke har arbejdet med Power BI Desktop, kan bruge denne artikel som en hurtig og nem introduktion til, hvordan du kan bruge DAX (Data Analysis Expressions) til at løse mange grundlæggende beregninger og problemer med dataanalyse. Vi gennemgår nogle grundlæggende oplysninger, en række opgaver, du kan udføre, og et videnstjek for at teste, hvad du har lært. Når du har fuldført denne artikel, skal du have en god forståelse af de vigtigste grundlæggende begreber i DAX.

Hvad er DAX?

DAX er en samling funktioner, operatorer og konstanter, der kan bruges i en formel eller et udtryk til at beregne og returnere en eller flere værdier. DAX hjælper dig med at oprette nye oplysninger ud fra data, der allerede findes i din model.

Hvorfor er DAX så vigtig?

Det er nemt at oprette en ny Power BI Desktop-fil og importere nogle data til den. Du kan endda oprette rapporter, der viser værdifuld indsigt uden overhovedet at bruge DAX-formler. Men hvad nu, hvis du har brug for at analysere vækstprocenten på tværs af produktkategorier og for forskellige datointervaller? Eller skal du beregne vækst år for år sammenlignet med markedstendenser? DAX-formler giver også denne funktion og mange andre vigtige funktioner. Hvis du lærer, hvordan du opretter effektive DAX-formler, kan du få mest ud af dine data. Når du får de oplysninger, du har brug for, kan du begynde at løse reelle forretningsmæssige problemer, der påvirker din bundlinje.

Forudsætninger

Du kender måske allerede til at oprette formler i Microsoft Excel, og denne viden vil være nyttig, når du skal forstå DAX. Men selvom du ikke har erfaring med Excel-formler, hjælper de begreber, der er beskrevet her, dig med at komme i gang med at oprette DAX-formler og løse BI-problemer i den virkelige verden med det samme.

Vi fokuserer på at forstå DAX-formler, der bruges i beregninger, mere specifikt i målinger og beregnede kolonner. Du bør allerede være fortrolig med at bruge Power BI Desktop til at importere data og føje felter til en rapport, og du bør også have kendskab til grundlæggende begreber som Målinger og Beregnede kolonner.

Eksempelprojektmappe

Den bedste måde at lære DAX at kende på er ved at oprette nogle grundlæggende formler, bruge dem med faktiske data og selv se resultaterne. Eksemplerne og opgaverne her bruger Filen Contoso Sales Sample til Power BI Desktop. Denne eksempelfil er den samme, som bruges i artiklen Selvstudium: Opret dine egne målinger i Power BI Desktop .

Lad os begynde

Vi indrammer vores forståelse af DAX omkring tre grundlæggende begreber: Syntaks, Funktioner og Kontekst. Der er andre vigtige begreber i DAX, men forståelsen af disse tre begreber giver det bedste grundlag for at opbygge dine DAX-færdigheder.

Syntaks

Før du opretter dine egne formler, kan vi se nærmere på DAX-formelsyntaksen. Syntaksen indeholder de forskellige elementer, der udgør en formel, eller mere enkelt, hvordan formlen skrives. Her er f.eks. en simpel DAX-formel for en måling:

Skærmbillede af en DAX-formel med henvisninger til individuelle syntakselementer.

Denne formel indeholder følgende syntakselementer:

Svar. Målingsnavnet Total Sales.

B. Lighedstegnoperatoren (=), som angiver starten af formlen. Når den beregnes, returnerer den et resultat.

C. DAX-funktionen SUM, der lægger alle tallene i kolonnen Sales[SalesAmount] sammen. Du får mere at vide om funktioner senere.

D. Parentes (),som omgiver et udtryk, der indeholder et eller flere argumenter. De fleste funktioner kræver mindst ét argument. Et argument overfører en værdi til en funktion.

E. Den tabel, der refereres til, Sales.

F. Den refererede kolonne [SalesAmount] i tabellen Sales. Med dette argument ved funktionen SUM, hvilken kolonne der skal aggregeres for en SUM.

Når du forsøger at forstå en DAX-formel, er det ofte nyttigt at opdele hvert element i et sprog, du tænker og taler hver dag. Du kan f.eks. læse denne formel som:

For målingen Total Sales skal du beregne (=) SUM af værdier i kolonnen [SalesAmount] i tabellen Sales.

Når denne måling føjes til en rapport, beregner og returnerer den værdier ved at opsummere salgsbeløbene for hvert af de andre felter, vi inkluderer, f.eks. Cell Telefon s i USA.

Du tænker måske: "Gør denne måling ikke det samme, som hvis jeg bare føjede feltet SalesAmount til min rapport?" - Ja, det gør jeg. Men der er en god grund til at oprette vores egen måling, der opsummerer værdier fra feltet SalesAmount: Vi kan bruge den som et argument i andre formler. Denne løsning virker måske lidt forvirrende nu, men efterhånden som dine FÆRDIGHEDER i DAX-formler vokser, vil viden om denne måling gøre dine formler og din model mere effektive. Du får faktisk vist målingen Total Sales som et argument i andre formler senere.

Lad os gennemgå et par flere ting om denne formel. Vi har især introduceret en funktion, SUM. Funktioner er formler, der er skrevet på forhånd, og som gør det nemmere at udføre komplekse beregninger og manipulationer med tal, datoer, klokkeslæt, tekst og meget mere. Du får mere at vide om funktioner senere.

Du kan også se, at kolonnenavnet [SalesAmount] var foranstillet i tabellen Sales, som kolonnen tilhører. Dette navn kaldes et fuldt kvalificeret kolonnenavn, fordi det indeholder kolonnenavnet med tabelnavnet foranstillet. Kolonner, der refereres til i den samme tabel, kræver ikke, at tabelnavnet medtages i formlen, hvilket kan gøre lange formler, der refererer til mange kolonner, kortere og nemmere at læse. Det er dog en god idé at medtage tabelnavnet i dine målingsformler, også selvom det er i den samme tabel.

Bemærk

Hvis et tabelnavn indeholder mellemrum, reserverede nøgleord eller ikke-tilladte tegn, skal tabelnavnet være omsluttet af enkelte anførselstegn. Du skal også sætte tabelnavne i anførselstegn, hvis navnet indeholder tegn uden for det alfanumeriske ANSI-tegnområde, uanset om landestandarden understøtter tegnsættet eller ej.

Det er vigtigt, at formlerne har den korrekte syntaks. Hvis syntaksen ikke er korrekt, returneres der i de fleste tilfælde en syntaksfejl. I andre tilfælde kan syntaksen være korrekt, men de returnerede værdier er muligvis ikke det, du forventer. DAX-editoren i Power BI Desktop indeholder en funktion med forslag, der bruges til at oprette syntaktisk korrekte formler ved at hjælpe dig med at vælge de korrekte elementer.

Lad os oprette et eksempel på en formel. Denne opgave hjælper dig med at forstå formelsyntaksen yderligere, og hvordan funktionen forslag på formellinjen kan hjælpe dig.

Opgave: Opret en målingsformel

  1. Download og åbn Power BI Desktop-filen Contoso Sales Sample.

  2. Højreklik på tabellen Sales på feltlisten i rapportvisning, og vælg derefter Ny måling.

  3. Erstat Måling på formellinjen ved at angive et nyt målingsnavn, Previous Quarter Sales.

  4. Skriv de første par bogstaver CAL efter lighedstegnet, og dobbeltklik derefter på den funktion, du vil bruge. I denne formel skal du bruge funktionen CALCULATE .

    Du skal bruge funktionen CALCULATE til at filtrere de beløb, vi vil lægge sammen med et argument, som vi sender til funktionen CALCULATE. Denne type funktion kaldes indlejringsfunktioner. Funktionen CALCULATE har mindst to argumenter. Den første er det udtryk, der skal evalueres, og det andet er et filter.

  5. Efter venstreparentesen ( for funktionen CALCULATE skal du skrive SUM efterfulgt af en anden venstreparentes (.

    Derefter sender vi et argument til funktionen SUM.

  6. Begynd at skrive Sal, og vælg derefter Sales[SalesAmount] efterfulgt af en slutparentes ).

    Dette trin opretter det første udtryksargument for funktionen CALCULATE.

  7. Skriv et komma (,) efterfulgt af et mellemrum for at angive det første filter, og skriv derefter PREVIOUSQUARTER.

    Du skal bruge time intelligence-funktionen PREVIOUSQUARTER til at filtrere SUM-resultater efter det forrige kvartal.

  8. Efter venstreparentesen ( for funktionen PREVIOUSQUARTER skal du skrive Calendar[DateKey].

    Funktionen PREVIOUSQUARTER har ét argument, en kolonne, der indeholder et sammenhængende datointerval. I dette tilfælde er det kolonnen DateKey i tabellen Calendar.

  9. Luk begge de argumenter, der overføres til funktionen PREVIOUSQUARTER og funktionen CALCULATE, ved at skrive to højreparenteser )).

    Formlen bør nu se sådan ud:

    Salg i forrige kvartal = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Markér afkrydsningsfeltet Markeringsikon på formellinjen, eller tryk på Enter for at validere formlen og føje den til tabellen Sales.

Du gjorde det! Du har lige oprettet en kompleks måling ved hjælp af DAX. Det, denne formel gør, er at beregne det samlede salg for det forrige kvartal afhængigt af de filtre, der er anvendt i en rapport. Vi kan f.eks. placere SalesAmount og vores nye måling Previous Quarter Sales fra tabellen Sales i et grupperet søjlediagram. Tilføj derefter Year som et udsnit i tabellen Calendar, og vælg 2011. Derefter skal du tilføje QuarterOfYear som et andet udsnitsværktøj og vælge 4, så får vi et diagram som dette:

Diagram over salg og salgsbeløb for forrige kvartal

Vær opmærksom på, at eksempelmodellen kun indeholder en lille mængde salgsdata fra 1/1/2011 til 19-19-2013. Hvis du vælger et år eller kvartal, hvor SalesAmount ikke kan lægges sammen, eller din nye måling ikke kan beregne salgsdata for det aktuelle eller forrige kvartal, vises der ingen data for den pågældende periode. Hvis du f.eks. vælger 2011 for Year og 1 for QuarterOfYear, vises der ingen data for Salg i forrige kvartal, fordi der ikke er nogen data for fjerde kvartal af 2010.

Du blev introduceret til flere vigtige aspekter af DAX-formler:

  • Denne formel omfattede to funktioner. PREVIOUSQUARTER, en time intelligence-funktion, er indlejret som et argument, der overføres til CALCULATE, en filterfunktion.

    DAX-formler kan indeholde op til 64 indlejrede funktioner. Det er usandsynligt, at en formel vil indeholde så mange indlejrede funktioner. En sådan formel ville faktisk være svær at oprette og foretage fejlfinding af, og den ville sandsynligvis heller ikke være hurtig.

  • I denne formel har du også brugt filtre. Filtre begrænser, hvad der skal beregnes. I dette tilfælde har du valgt ét filter som et argument, som faktisk er resultatet af en anden funktion. Du får mere at vide om filtre senere.

  • Du har brugt funktionen CALCULATE. Denne funktion er en af de mest effektive funktioner i DAX. Når du opretter modeller og opretter mere komplekse formler, vil du sandsynligvis bruge denne funktion mange gange. Selvom yderligere diskussion om funktionen CALCULATE er uden for denne artikels anvendelsesområde, skal du være særlig opmærksom på den, når din viden om DAX vokser.

Hurtig syntaksquiz

  1. Hvad gør denne knap på formellinjen?

    Valg af knap

  2. Hvad omgiver altid et kolonnenavn i en DAX-formel?

Svarene er angivet i slutningen af denne artikel.

Funktioner

Funktioner er foruddefinerede formler, der udfører beregninger ved hjælp af bestemte værdier, kaldet argumenter, i en bestemt rækkefølge eller struktur. Argumenter kan være andre funktioner, en anden formel, et udtryk, kolonnereferencer, tal, tekst, logiske værdier, f.eks. TRUE eller FALSE, eller konstanter.

DAX indeholder følgende kategorier af funktioner: Dato og klokkeslæt, Time Intelligence, Information, Logical, Mathematical, Statistical, Text, Parent/Child og Other. Hvis du kender funktioner i Excel-formler, vises mange af funktionerne i DAX på samme måde som dig. DAX-funktioner er dog entydige på følgende måder:

  • En DAX-funktion refererer altid til en komplet kolonne eller en tabel. Hvis du kun vil bruge bestemte værdier fra en tabel eller kolonne, kan du føje filtre til formlen.

  • Hvis du har brug for at tilpasse beregninger række for række, indeholder DAX funktioner, der gør det muligt at bruge den aktuelle rækkeværdi eller en relateret værdi som en slags argument til at udføre beregninger baseret på konteksten. Du får mere at vide om kontekst senere.

  • DAX indeholder mange funktioner, der returnerer en tabel i stedet for en værdi. Tabellen vises ikke, men bruges til at angive input til andre funktioner. Du kan f.eks. hente en tabel og derefter tælle de entydige værdier i den eller beregne dynamiske summer på tværs af filtrerede tabeller eller kolonner.

  • DAX indeholder forskellige time intelligence-funktioner. Med disse funktioner kan du definere eller vælge datointervaller og udføre dynamiske beregninger baseret på dem. Du kan f.eks. sammenligne summer på tværs af parallelle perioder.

  • Excel har en populær funktion, LOPSLAG. DAX-funktioner tager ikke en celle eller et celleområde som en reference, som LOPSLAG gør i Excel. DAX-funktioner bruger en kolonne eller en tabel som reference. Vær opmærksom på, at du arbejder med en relationsdatamodel i Power BI Desktop. Det er nemt at slå værdier op i en anden tabel, og i de fleste tilfælde behøver du slet ikke at oprette formler.

    Som du kan se, kan funktioner i DAX hjælpe dig med at oprette effektive formler. Vi har kun berørt de grundlæggende funktioner. Efterhånden som dine DAX-færdigheder vokser, opretter du formler ved hjælp af mange forskellige funktioner. Et af de bedste steder at få mere at vide om hver af DAX-funktionerne er i REFERENCE til DAX-funktioner.

Funktioner QuickQuiz

  1. Hvad refererer en funktion altid til?
  2. Kan en formel indeholde mere end én funktion?
  3. Hvilken kategori af funktioner ville du bruge til at sammenkæde to tekststrenge til én streng?

Svarene er angivet i slutningen af denne artikel.

Kontekst

Kontekst er et af de vigtigste DAX-begreber at forstå. Der er to typer kontekst i DAX: rækkekontekst og filterkontekst. Vi kigger først på rækkekontekst.

Rækkekontekst

Det er nemmest at tænke på rækkekontekst som den aktuelle række. Den anvendes, når en formel har en funktion, der anvender filtre til at identificere en enkelt række i en tabel. Funktionen anvender i sagens natur en rækkekontekst for hver række i tabellen, som den filtrerer over. Denne type rækkekontekst gælder oftest for målinger.

Filterkontekst

Filterkontekst er lidt sværere at forstå end rækkekontekst. Du kan nemmest tænke på filterkontekst som: Et eller flere filtre anvendt i en beregning, der bestemmer et resultat eller en værdi.

Filterkontekst findes ikke i stedet for rækkekontekst. I stedet gælder den ud over rækkekontekst. Hvis du f.eks. vil indsnævre de værdier, der skal medtages i en beregning, kan du anvende en filterkontekst, som ikke kun angiver rækkekonteksten, men også angiver en bestemt værdi (filter) i den pågældende rækkekontekst.

Filterkontekst kan nemt ses i dine rapporter. Når du f.eks. føjer TotalCost til en visualisering og derefter tilføjer Year og Region, definerer du en filterkontekst, der vælger et undersæt af data baseret på et givet år og område.

Hvorfor er filterkontekst så vigtig for DAX? Du har set, at filterkontekst kan anvendes ved at føje felter til en visualisering. Filterkontekst kan også anvendes i en DAX-formel ved at definere et filter med funktioner som f.eks. ALL, RELATED, FILTER, CALCULATE, efter relationer og af andre målinger og kolonner. Lad os f.eks. se på følgende formel i en måling med navnet Store Sales:

Målingen Butikssalg

For bedre at forstå denne formel kan vi opdele den på samme måde som med andre formler.

Denne formel indeholder følgende syntakselementer:

Svar. Målingsnavnet Store Sales.

B. Lighedstegnoperatoren (=), som angiver starten af formlen.

C. Funktionen CALCULATE , der evaluerer et udtryk som et argument i en kontekst, der ændres af de angivne filtre.

D. Parentes (),som omgiver et udtryk, der indeholder et eller flere argumenter.

E. En måling [Total Sales] i den samme tabel som et udtryk. Målingen Total Sales har formlen: =SUM(Sales[SalesAmount]).

F. Et komma (,), som adskiller det første udtryksargument fra filterargumentet.

G. Den fuldt kvalificerede kolonne Channel[ChannelName], der refereres til. Dette er vores rækkekontekst. Hver række i denne kolonne angiver en kanal, f.eks. Store eller Online.

H. Den bestemte værdi, Store, som et filter. Dette er vores filterkontekst.

Denne formel sikrer, at det kun er salgsværdier, der er defineret af målingen Total Sales, der beregnes for rækker i kolonnen Channel[ChannelName], hvor værdien Store bruges som et filter.

Som du kan forestille dig, har det enorme og effektive funktioner at kunne definere filterkontekst i en formel. Muligheden for kun at referere til en bestemt værdi i en relateret tabel er blot ét eksempel. Bare rolig, hvis du ikke helt forstår kontekst med det samme. Når du opretter dine egne formler, kan du bedre forstå kontekst, og hvorfor det er så vigtigt i DAX.

Hurtig kontekstquiz

  1. Hvad er de to typer kontekst?
  2. Hvad er filterkontekst?
  3. Hvad er rækkekontekst?

Svarene er angivet i slutningen af denne artikel.

Resumé

Nu, hvor du har en grundlæggende forståelse af de vigtigste begreber i DAX, kan du begynde at oprette DAX-formler til målinger på egen hånd. DAX kan faktisk være lidt vanskelig at lære, men der er mange ressourcer til rådighed for dig. Når du har læst denne artikel og eksperimenteret med nogle af dine egne formler, kan du få mere at vide om andre DAX-begreber og -formler, der kan hjælpe dig med at løse dine egne virksomhedsproblemer. Der er mange DAX-ressourcer tilgængelige for dig. det vigtigste er DAX-referencen (Data Analysis Expressions).

Da DAX har eksisteret i flere år i andre Microsoft BI-værktøjer, f.eks. Power Pivot og Analysis Services-tabelmodeller, er der mange fantastiske kildeoplysninger derude. Du kan finde flere oplysninger i bøger, whitepapers og blogs fra både Microsoft og førende BI-fagfolk. DAX Resource Center er også et godt sted at starte.

Hurtigquiz-svar

Syntaks:

  1. Validerer og angiver målingen i modellen.
  2. Kantede parenteser [].

Funktioner:

  1. En tabel og en kolonne.
  2. Ja. En formel kan indeholde op til 64 indlejrede funktioner.
  3. Tekstfunktioner.

Kontekst:

  1. Rækkekontekst og filterkontekst.
  2. Et eller flere filtre i en beregning, der bestemmer en enkelt værdi.
  3. Den aktuelle række.