Del via


Lær DAX grundlæggende i Power BI Desktop

Brugere, der er nye i Power BI Desktop, kan bruge denne artikel som en hurtig og nem introduktion til, hvordan du kan bruge Data Analysis Expressions (DAX) til at løse mange grundlæggende beregninger og dataanalyseproblemer. Vi gennemgår noget konceptuel information, en række opgaver, du kan udføre, og en videnstest for at teste, hvad du har lært. Efter at have gennemført denne artikel bør du have en god forståelse af de vigtigste grundlæggende begreber i DAX.

Hvad er DAX?

DAX er en samling af 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 skabe ny information ud fra data, der allerede er i din model.

Hvorfor er DAX så vigtigt?

Det er nemt at oprette en ny Power BI Desktop-fil og importere nogle data i den. Du kan endda oprette rapporter, der viser værdifulde indsigter, uden at bruge nogen DAX-formler overhovedet. Men hvad hvis du skal analysere vækstprocenten på tværs af produktkategorier og for forskellige datointervaller? Eller skal du beregne år-til-år vækst sammenlignet med markedstendenser? DAX-formler tilbyder denne kapacitet og mange andre vigtige funktioner også. At lære at skabe effektive DAX-formler vil hjælpe dig med at få mest muligt ud af dine data. Når du har fået de oplysninger, du har brug for, kan du begynde at løse reelle forretningsproblemer, der påvirker din bundlinje.

Prerequisites

Du er måske allerede bekendt med at lave formler i Microsoft Excel, og den viden vil være nyttig til at forstå DAX. Men selv hvis du ikke har erfaring med Excel-formler, vil de beskrevne koncepter hjælpe dig med at komme i gang med at lave DAX-formler og løse virkelige BI-problemer med det samme.

Vi vil fokusere på at forstå DAX-formler, der bruges i beregninger, mere specifikt i mål og beregnede kolonner. Du bør allerede være bekendt med at bruge Power BI Desktop til at importere data og tilføje felter til en rapport, og du bør også være bekendt med grundlæggende begreber som Measures og Calculated columns.

Eksempel på arbejdsbog

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

Lad os begynde

Vi vil indramme vores forståelse af DAX omkring tre grundlæggende begreber: Syntaks, Funktioner og Kontekst. Der er andre vigtige begreber i DAX, men at forstå disse tre begreber vil give det bedste fundament til at bygge dine DAX-færdigheder på.

Syntax

Før du laver dine egne formler, lad os se på DAX-formelsyntaks. Syntaks omfatter de forskellige elementer, der udgør en formel, eller mere enkelt, hvordan formlen er skrevet. For eksempel er her en simpel DAX-formel for et mål:

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

Denne formel indeholder følgende syntakselementer:

A. Målets navn er Total Sales.

B. Operatoren med lighedstegn (=), som angiver begyndelsen af formlen. Når den beregnes, vil den returnere et resultat.

C. DAX-funktionen SUM, som lægger alle tallene i kolonnen Sales[SalesAmount] sammen. Du lærer mere 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 refererede tabel, Salg.

F. Den refererede kolonne, [SalesAmount], i Salgstabellen. Med dette argument ved SUM-funktionen, hvilken kolonne den skal aggregere en SUM på.

Når man prøver at forstå en DAX-formel, er det ofte nyttigt at bryde hvert element ned i et sprog, du tænker og taler hver dag. For eksempel kan du læse denne formel som:

For målet kaldet Total Sales beregnes (=) SUMMEN af værdier i kolonnen [SalesAmount] i Sales-tabellen.

Når dette mål lægges til en rapport, beregner og returnerer det værdier ved at summere salgsbeløb for hvert af de andre felter, vi inkluderer, for eksempel mobiltelefoner i USA.

Du tænker måske: "Gør denne måling ikke det samme, som hvis jeg bare tilføjede feltet SalesAmount til min rapport?" Jo, det er det. Men der er en god grund til at lave vores eget mål, der opsummerer værdier fra feltet SalesAmount: Vi kan bruge det som argument i andre formler. Denne løsning kan virke lidt forvirrende nu, men efterhånden som dine DAX-formelfærdigheder vokser, vil kendskab til dette mål gøre dine formler og din model mere effektive. Faktisk vil du se Total Sales-målet dukke op som et argument i andre formler senere.

Lad os gennemgå et par ting mere om denne formel. Især introducerede vi en funktion, SUM. Funktioner er forudskrevne formler, der gør det lettere at udføre komplekse beregninger og manipulationer med tal, datoer, tid, tekst og mere. Du lærer mere om funktioner senere.

Du kan også se, at kolonnenavnet [SalesAmount] blev forudgået af Sales-tabellen, som kolonnen hører til. Dette navn kaldes et fuldt kvalificeret kolonnenavn, idet det inkluderer kolonnenavnet forudgået af tabelnavnet. Kolonner, der refereres til i samme tabel, kræver ikke, at tabelnavnet er inkluderet i formlen, hvilket kan gøre lange formler, der refererer til mange kolonner, kortere og lettere at læse. Det er dog en god praksis at inkludere tabelnavnet i dine måleformler, selv når du er i samme tabel.

Note

Hvis et tabelnavn indeholder mellemrum, reserverede nøgleord eller forbudte tegn, skal du indhegne tabelnavnet med enkelt anførselstegn. Du skal også indsætte tabelnavne i anførselstegn, hvis navnet indeholder tegn uden for ANSI's alfanumeriske tegnområde, uanset om dit område understøtter tegnsættet eller ej.

Det er vigtigt, at dine formler har den korrekte syntaks. I de fleste tilfælde, hvis syntaksen ikke er korrekt, returneres en syntaksfejl. I andre tilfælde kan syntaksen være korrekt, men de returnerede værdier er måske ikke, hvad du forventer. DAX-editoren i Power BI Desktop inkluderer en forslagsfunktion, der bruges til at skabe syntaktisk korrekte formler ved at hjælpe dig med at vælge de korrekte elementer.

Lad os lave et eksempel på en formel. Denne opgave vil hjælpe dig med at forstå formelsyntaksen bedre og hvordan forslagsfunktionen i formellinjen kan hjælpe dig.

Opgave: Opret en målformel

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

  2. I rapportvisning, i feltlisten, højreklik på Salgstabellen og vælg derefter Nyt mål.

  3. I formellinjen erstattes Measure ved at indtaste et nyt målnavn, Forrige kvartals salg.

  4. Efter lighedstegnet skriver du de første par bogstaver CAL, og dobbeltklikker derefter på den funktion, du vil bruge. I denne formel vil du bruge BEREGNER-funktionen .

    Du bruger funktionen CALCULATE til at filtrere de mængder, vi vil summere, ud fra et argument, vi sender til CALCULER-funktionen. Denne type funktion kaldes indlejringsfunktioner. CALCULATION-funktionen har mindst to argumenter. Den første er udtrykket, der skal evalueres, og den anden er et filter.

  5. Efter åbningsparentesen ( for CALCULATION-funktionen , type SUM efterfulgt af en anden åbningsparentes (.

    Dernæst sender vi et argument til SUM-funktionen.

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

    Dette trin skaber det første udtryksargument for vores CALCAL-funktion.

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

    Du bruger PREVIOUSQUARTER-tidsintelligensfunktionen til at filtrere SUM-resultater efter forrige kvartal.

  8. Efter åbningsparentesen ( for funktionen FORUDGÅENDE, skriv Calendar[DateKey].

    Funktionen FORFOR-kvartal har ét argument, en kolonne der indeholder et sammenhængende datoområde. I vores tilfælde er det kolonnen DateKey i Kalendertabellen.

  9. Luk både argumenterne, der sendes til funktionen FORVEJET og BEREGNE-funktionen, ved at skrive to lukkende parentes )).

    Din formel skulle nu se sådan ud:

    Forrige kvartals salg = BEREGN(SUM(Salg[Salgsbeløb]), FORRIGE kvartal(Kalender[DatoNøgle]))

  10. Vælg fluebenet i formellinjen eller tryk Enter for at validere formlen og tilføje den til salgstabellen.

Du gjorde det! Du har bare oprettet et komplekst mål ved at bruge DAX. Denne formel beregner det samlede salg for det foregående kvartal, afhængigt af de filtre, der anvendes i en rapport. For eksempel kan vi lægge SalesAmount og vores nye mål for salg i forrige kvartal fra Salgstabellen i et Clustered column-diagram. Tilføj derefter år som slicer i kalendertabellen og vælg 2011. Derefter tilføjer vi QuarterOfYear som en anden Slicer og vælger 4, og vi får et diagram som dette:

Forrige kvartals salg og SalgsMængde-diagram

Husk, at prøvemodellen kun indeholder en lille mængde salgsdata fra 1/1/2011 til 19/1/2013. Hvis du vælger et år eller kvartal, hvor SalesAmount ikke kan summeres, eller hvor din nye måling ikke kan beregne salgsdata for det nuværende eller forrige kvartal, vises der ingen data for den periode. For eksempel, hvis du vælger 2011 for år og 1 for kvartal for år, vises der ingen data for salg i forrige kvartal, fordi der ikke er data for fjerde kvartal af 2010.

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

  • Denne formel omfattede to funktioner. PREVIOUSQUARTER, en tidsintelligensfunktion, 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 nogensinde ville indeholde så mange indlejrede funktioner. Faktisk ville sådan en formel være svær at skabe og fejlfinde, og den ville sandsynligvis heller ikke være hurtig.

  • I denne formel brugte du også filtre. Filtrene indsnævrer, hvad der skal beregnes. I dette tilfælde valgte du ét filter som et argument, hvilket faktisk er resultatet af en anden funktion. Du vil lære mere om filtre senere.

  • Du brugte funktionen BEREGN. Denne funktion er en af de mest kraftfulde funktioner i DAX. Når du laver modeller og skaber mere komplekse formler, vil du sandsynligvis bruge denne funktion mange gange. Selvom yderligere diskussion om CALCULATE funktionen ligger uden for denne artikels rammer, bør du være særlig opmærksom på den, efterhånden som din viden om DAX vokser.

Syntax QuickQuiz

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

    Knapvalg

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

Svar gives i slutningen af denne artikel.

Functions

Funktioner er foruddefinerede formler, der udfører beregninger ved at bruge specifikke værdier, kaldet argumenter, i en bestemt rækkefølge eller struktur. Argumenter kan være andre funktioner, en anden formel, udtryk, kolonnereferencer, tal, tekst, logiske værdier som TRUE eller FALSE, eller konstanter.

DAX omfatter følgende kategorier af funktioner: Dato og Tid, Tidsintelligens, Information, Logisk, Matematisk, Statistisk, Tekst, Forælder/Barn og Andre funktioner. Hvis du kender til funktioner i Excel-formler, vil mange af funktionerne i DAX ligne dig selv; dog er DAX-funktioner unikke 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 skal tilpasse beregninger række for række, tilbyder DAX funktioner, der lader dig bruge den aktuelle rækkeværdi eller en relateret værdi som en slags argument til at udføre beregninger baseret på konteksten. Du vil lære mere om konteksten senere.

  • DAX indeholder mange funktioner, der returnerer en tabel i stedet for en værdi. Tabellen vises ikke, men bruges til at give 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 inkluderer forskellige tidsintelligensfunktioner. Disse funktioner lader dig 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, VLOOKUP. DAX-funktioner tager ikke en celle eller celleområde som reference, som VLOOKUP gør i Excel. DAX-funktioner bruger en kolonne eller en tabel som reference. Husk, at i Power BI Desktop arbejder du med en relationel datamodel. Det er nemt at slå værdier op i en anden tabel, og i de fleste tilfælde behøver du slet ikke oprette nogen formler.

    Som du kan se, kan funktioner i DAX hjælpe dig med at skabe kraftfulde formler. Vi berørte kun det grundlæggende i funktionerne. Efterhånden som dine DAX-færdigheder vokser, vil du skabe formler ved at bruge mange forskellige funktioner. Et af de bedste steder at lære detaljer om hver af DAX-funktionerne er i DAX Function Reference.

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?

Svar gives i slutningen af denne artikel.

Context

Kontekst er et af de vigtigste DAX-koncepter at forstå. Der findes to typer kontekst i DAX: række-kontekst og filter-kontekst. Vi ser først på rækkekonteksten.

Rækkekontekst

Rækkekontekst opfattes lettest som den aktuelle række. Den gælder, når en formel har en funktion, der anvender filtre til at identificere en enkelt række i en tabel. Funktionen vil automatisk anvende 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 lettest tænke på filterkontekst som: Et eller flere filtre, der anvendes i en beregning, der bestemmer et resultat eller en værdi.

Filterkontekst eksisterer ikke i stedet for rækkekontekst; snarere gælder det ud over rækkekonteksten. For eksempel, for yderligere at indsnævre værdierne, der skal inkluderes i en beregning, kan du anvende en filterkontekst, som ikke kun specificerer rækkekonteksten, men også en bestemt værdi (filter) i den pågældende rækkekontekst.

Filterkonteksten er let at se i dine rapporter. For eksempel, når du tilføjer TotalCost til en visualisering og derefter tilføjer År og Region, definerer du en filterkontekst, der vælger et delmængde data baseret på et givent år og region.

Hvorfor er filterkontekst så vigtig for DAX? Du har set, at filterkontekst kan anvendes ved at tilføje felter til en visualisering. Filterkontekst kan også anvendes i en DAX-formel ved at definere et filter med funktioner som ALLE, RELATEREDE, FILTER, CALCULATE, ved relationer og ved andre mål og kolonner. For eksempel, lad os se på følgende formel i et mål kaldet Store Sales:

Måling af butikssalg

For bedre at forstå denne formel kan vi bryde den ned, ligesom med andre formler.

Denne formel indeholder følgende syntakselementer:

A. Målets navn, Store Sales.

B. Operatoren med lighedstegn (=), som angiver begyndelsen af formlen.

C. CALCAL-funktionen, som evaluerer et udtryk som et argument i en kontekst, der modificeres af de specificerede filtre.

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

E. Et mål [Samlede salg] i samme tabel som et udtryk. Målet Total Sales har formlen: =SUM(Sales[SalesAmount]).

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

G. Den fuldt kvalificerede referencekolonne, Channel[ChannelName]. Dette er vores rækkekontekst. Hver række i denne kolonne angiver en kanal, såsom Store eller Online.

H. Den specifikke værdi, Lagre, som et filter. Dette er vores filterkontekst.

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

Som du kan forestille dig, har evnen til at definere filterkontekst inden for en formel enorme og kraftfulde muligheder. Muligheden for kun at referere til en bestemt værdi i en relateret tabel er blot et sådant eksempel. Bare rolig, hvis du ikke forstår konteksten helt med det samme. Når du laver dine egne formler, vil du bedre forstå konteksten og hvorfor den er så vigtig i DAX.

Kontekst QuickQuiz

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

Svar gives i slutningen af denne artikel.

Overvejelser

Overvej, at mens Power Query Editor er case-sensitiv, er DAX og Analysis Services-motoren, der driver Power BI, små bogstaver, ufølsomme , når data er indlæst i frontend. Husk denne sondring, når du skriver DAX-forespørgsler.

Summary

Nu hvor du har en grundlæggende forståelse af de vigtigste begreber i DAX, kan du begynde at lave DAX-formler til mål på egen hånd. DAX kan bestemt være lidt tricky at lære, men der er mange ressourcer tilgængelige for dig. Efter at have læst denne artikel og eksperimenteret med nogle af dine egne formler, kan du lære mere om andre DAX-koncepter og formler, der kan hjælpe dig med at løse dine egne forretningsproblemer. Der er mange DAX-ressourcer tilgængelige for dig; den vigtigste er Data Analysis Expressions (DAX) Reference.

Fordi DAX har eksisteret i flere år i andre Microsoft BI-værktøjer som Power Pivot og Analysis Services Tabular models, findes der mange gode informationskilder derude. Du kan finde mere information i bøger, whitepapers og blogs fra både Microsoft og førende BI-professionelle. DAX Resource Center er også et godt sted at starte.

QuickQuiz-svar

Syntax:

  1. Validerer og indtaster målingen i modellen.
  2. Parentes [].

Functions:

  1. Et bord og en søjle.
  2. Yes. En formel kan indeholde op til 64 indlejrede funktioner.
  3. Tekstfunktioner.

Context:

  1. Række-kontekst og filter-kontekst.
  2. Et eller flere filtre i en beregning, der bestemmer en enkelt værdi.
  3. Den nuværende konflikt.