Lær grunnleggende om DAX i Power BI Desktop

Brukere som er nye i Power BI Desktop, kan bruke denne artikkelen som en rask og enkel innføring i hvordan du kan bruke DAX (Data Analysis Expressions) til å løse mange grunnleggende beregninger og problemer med dataanalyse. Vi går gjennom litt begrepsmessig informasjon, en rekke oppgaver du kan fullføre, og en kunnskapskontroll for å teste det du har lært. Når du har fullført denne artikkelen, bør du ha en god forståelse av de viktigste grunnleggende konseptene i DAX.

Hva er DAX?

DAX er en samling funksjoner, operatorer og konstanter som kan brukes i en formel, eller et uttrykk, til å beregne og returnere én eller flere verdier. DAX hjelper deg med å opprette ny informasjon fra data som allerede finnes i modellen.

Hvorfor er DAX så viktig?

Det er enkelt å opprette en ny Power BI Desktop-fil og importere noen data til den. Du kan også opprette rapporter som viser verdifull innsikt uten å bruke DAX-formler i det hele tatt. Men hva om du trenger å analysere vekstprosent på tvers av produktkategorier og for ulike datointervaller? Eller må du beregne vekst fra år til år sammenlignet med markedstrender? DAX-formler gir også denne funksjonaliteten og mange andre viktige funksjoner. Læring hvordan du oppretter effektive DAX-formler, kan du få mest mulig ut av dataene. Når du får informasjonen du trenger, kan du begynne å løse virkelige forretningsproblemer som påvirker bunnlinjen.

Forutsetning

Du er kanskje allerede kjent med å opprette formler i Microsoft Excel, og denne kunnskapen vil være nyttig for å forstå DAX. Men selv om du ikke har erfaring med Excel-formler, vil konseptene som er beskrevet her, hjelpe deg med å komme i gang med å opprette DAX-formler og løse virkelige BI-problemer umiddelbart.

Vi vil fokusere på å forstå DAX-formler som brukes i beregninger, mer spesifikt, i mål og beregnede kolonner. Du bør allerede være kjent med å bruke Power BI Desktop til å importere data og legge til felt i en rapport, og du bør også være kjent med grunnleggende begreper om mål og beregnede kolonner.

Eksempelarbeidsbok

Den beste måten å lære DAX på, er å opprette noen grunnleggende formler, bruke dem med faktiske data og se resultatene selv. Eksemplene og oppgavene her bruker Contoso Salgseksempel for Power BI Desktop-filen. Denne eksempelfilen er den samme som brukes i opplæringen : Opprett dine egne mål i Power BI Desktop-artikkelen .

La oss begynne

Vi vil ramme vår forståelse av DAX rundt tre grunnleggende konsepter: Syntaks, funksjoner og kontekst. Det finnes andre viktige konsepter i DAX, men å forstå disse tre konseptene vil gi det beste grunnlaget for å bygge dax-ferdighetene dine.

Syntaks

La oss ta en titt på DAX-formelsyntaksen før du oppretter dine egne formler. Syntaksen inneholder de ulike elementene som utgjør en formel, eller ganske enkelt hvordan formelen skrives. Her er for eksempel en enkel DAX-formel for et mål:

Skjermbilde av en DAX-formel med pekere til individuelle syntakselementer.

Denne formelen inneholder følgende syntakselementer:

Svar. Målnavnet, Totalt salg.

B. Likhetstegnoperatoren (=), som angir begynnelsen av formelen. Når det beregnes, returneres et resultat.

C. DAX-funksjonen SUM, som legger sammen alle tallene i kolonnen Salg[SalesAmount] . Du vil lære mer om funksjoner senere.

D. Parentes (), som omgir et uttrykk som inneholder ett eller flere argumenter. De fleste funksjoner krever minst ett argument. Et argument sender en verdi til en funksjon.

E. Den refererte tabellen Salg.

F. Kolonnen det refereres til, [SalesAmount], i Salg-tabellen. Med dette argumentet vet SUMMER-funksjonen hvilken kolonne som skal aggregere en SUM.

Når du prøver å forstå en DAX-formel, er det ofte nyttig å dele opp hvert av elementene til et språk du tenker og snakker hver dag. Du kan for eksempel lese denne formelen som:

Beregn (=) SUMMEN av verdiene i kolonnen [SalesAmount ] i Salg-tabellen for målet som heter Totalt salg.

Når det legges til i en rapport, beregner og returnerer dette målet verdier ved å summere salgsbeløpene for hvert av de andre feltene vi inkluderer, for eksempel celle Telefon i USA.

Du tenker kanskje: «Gjør ikke dette målet det samme som om jeg bare skulle legge til SalesAmount-feltet i rapporten?» Vel, ja. Men det er en god grunn til å opprette vårt eget mål som oppsummerer verdier fra SalesAmount-feltet: Vi kan bruke det som et argument i andre formler. Denne løsningen kan virke litt forvirrende nå, men etter hvert som DAX-formelferdighetene vokser, vil det å vite dette målet gjøre formlene og modellen mer effektiv. Faktisk vil du se total salg-målet vises som et argument i andre formler senere.

La oss gå gjennom noen flere ting om denne formelen. Spesielt introduserte vi en funksjon, SUM. Funksjoner er forhåndsskrevne formler som gjør det enklere å utføre komplekse beregninger og manipulasjoner med tall, datoer, klokkeslett, tekst og mer. Du vil lære mer om funksjoner senere.

Du ser også at kolonnenavnet [SalesAmount] ble innledet av Salg-tabellen der kolonnen hører til. Dette navnet kalles et fullstendig kolonnenavn ved at det inneholder kolonnenavnet foran tabellnavnet. Kolonner det refereres til i samme tabell, krever ikke at tabellnavnet inkluderes i formelen, noe som kan gjøre lange formler som refererer til mange kolonner kortere og enklere å lese. Det er imidlertid en god praksis å inkludere tabellnavnet i målformlene, selv når du er i samme tabell.

Merk

Hvis et tabellnavn inneholder mellomrom, reserverte nøkkelord eller tegn som ikke er tillatt, må du omslutte tabellnavnet i enkle anførselstegn. Du må også omslutte tabellnavn i anførselstegn hvis navnet inneholder tegn utenfor det alfanumeriske ANSI-tegnområdet, uavhengig av om den nasjonale innstillingen støtter tegnsettet eller ikke.

Det er viktig at formlene har riktig syntaks. I de fleste tilfeller, hvis syntaksen ikke er riktig, returneres en syntaksfeil. I andre tilfeller kan syntaksen være riktig, men verdiene som returneres, er kanskje ikke det du forventer. DAX-redigeringsprogrammet i Power BI Desktop inneholder en forslagsfunksjon, som brukes til å opprette syntaktisk korrekte formler ved å hjelpe deg med å velge de riktige elementene.

La oss opprette en eksempelformel. Denne oppgaven hjelper deg med å forstå formelsyntaksen ytterligere og hvordan forslagsfunksjonen på formellinjen kan hjelpe deg.

Oppgave: Opprette en målformel

  1. Last ned og åpne Filen For eksempel på Contoso-salg, Power BI Desktop.

  2. Høyreklikk på Salg-tabellen i feltlisten i rapportvisning, og velg deretter Nytt mål.

  3. Erstatt Mål på formellinjen ved å skrive inn et nytt målnavn, Salg for forrige kvartal.

  4. Etter likhetstegnet skriver du inn de første bokstavene cal, og deretter dobbeltklikker du funksjonen du vil bruke. I denne formelen vil du bruke CALCULATE-funksjonen .

    Du bruker CALCULATE-funksjonen til å filtrere beløpene vi vil summere etter et argument vi sender til CALCULATE-funksjonen. Denne typen funksjon kalles nestingfunksjoner. CALCULATE-funksjonen har minst to argumenter. Det første er uttrykket som skal evalueres, og det andre er et filter.

  5. Etter venstre parentes ( for CALCULATE-funksjonen skriver du inn SUMMER etterfulgt av en annen venstreparentes (.

    Deretter sender vi et argument til SUMMER-funksjonen.

  6. Begynn å skrive inn sal, og velg deretter Salg[SalesAmount], etterfulgt av en avsluttende parentes ).

    Dette trinnet oppretter det første uttrykksargumentet for CALCULATE-funksjonen.

  7. Skriv inn et komma (,) etterfulgt av et mellomrom for å angi det første filteret, og skriv deretter inn PREVIOUSQUARTER.

    Du bruker PREVIOUSQUARTER-tidsintelligensfunksjonen til å filtrere SUMMER-resultater etter forrige kvartal.

  8. Etter venstre parentes ( for PREVIOUSQUARTER-funksjonen skriver du inn Calendar[DateKey].

    PREVIOUSQUARTER-funksjonen har ett argument, en kolonne som inneholder et sammenhengende datoområde. I vårt tilfelle er det DateKey-kolonnen i Kalender-tabellen.

  9. Lukk begge argumentene som sendes til PREVIOUSQUARTER-funksjonen og CALCULATE-funksjonen ved å skrive inn to høyreparenteser )).

    Formelen skal nå se slik ut:

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

  10. Merk av Hakeikon for formellinjen, eller trykk enter for å validere formelen og legge den til i Salg-tabellen.

Du klarte det! Du har nettopp opprettet et komplekst mål ved hjelp av DAX. Hva denne formelen vil gjøre er å beregne det totale salget for forrige kvartal, avhengig av filtrene som brukes i en rapport. Vi kan for eksempel plassere SalesAmount og vårt nye salgsmål for forrige kvartal fra Salg-tabellen i et gruppert stolpediagram. Deretter legger du til År som slicer i Kalender-tabellen, og velger 2011. Deretter legger du til QuarterOfYear som en annen slicer og velger 4, og vi får et diagram som dette:

Diagram for salg og salg i forrige kvartal

Husk at eksempelmodellen bare inneholder en liten mengde salgsdata fra 01.01.2011 til 19.01.2013. Hvis du velger et år eller kvartal der SalesAmount ikke kan summeres, eller det nye målet ikke kan beregne salgsdata for gjeldende eller forrige kvartal, vises ingen data for denne perioden. Hvis du for eksempel velger 2011 for År og 1 for QuarterOfYear, vises ingen data for salg for forrige kvartal fordi det ikke er noen data for fjerde kvartal 2010.

Du ble introdusert for flere viktige aspekter ved DAX-formler:

  • Denne formelen inkluderte to funksjoner. PREVIOUSQUARTER, en tidsintelligensfunksjon, nestes som et argument som sendes til CALCULATE, en filterfunksjon.

    DAX-formler kan inneholde opptil 64 nestede funksjoner. Det er usannsynlig at en formel noensinne vil inneholde så mange nestede funksjoner. Faktisk ville en slik formel være vanskelig å opprette og feilsøke, og det ville sannsynligvis ikke være raskt heller.

  • I denne formelen brukte du også filtre. Filtre begrenser hva som skal beregnes. I dette tilfellet valgte du ett filter som et argument, som faktisk er resultatet av en annen funksjon. Du vil lære mer om filtre senere.

  • Du brukte CALCULATE-funksjonen. Denne funksjonen er en av de kraftigste funksjonene i DAX. Etter hvert som du redigerer modeller og oppretter mer komplekse formler, vil du sannsynligvis bruke denne funksjonen mange ganger. Selv om videre diskusjon om CALCULATE-funksjonen er utenfor omfanget av denne artikkelen, etter hvert som kunnskapen din om DAX vokser, bør du være spesielt oppmerksom på den.

Hurtigquiz for syntaks

  1. Hva gjør denne knappen på formellinjen?

    Knappevalg

  2. Hva omslutter alltid et kolonnenavn i en DAX-formel?

Svar er gitt på slutten av denne artikkelen.

Funksjoner

Funksjoner er forhåndsdefinerte formler som utfører beregninger ved hjelp av bestemte verdier, kalt argumenter, i en bestemt rekkefølge eller struktur. Argumenter kan være andre funksjoner, en annen formel, et uttrykk, kolonnereferanser, tall, tekst, logiske verdier som SANN eller USANN eller konstanter.

DAX inkluderer følgende kategorier av funksjoner: Dato og klokkeslett, Tidsintelligens, Informasjon, Logisk, Matematisk, Statistisk, Tekst, Overordnet/Underordnet og Andre funksjoner. Hvis du er kjent med funksjoner i Excel-formler, vil mange av funksjonene i DAX vises på samme måte som deg. DAX-funksjoner er imidlertid unike på følgende måter:

  • En DAX-funksjon refererer alltid til en fullstendig kolonne eller en tabell. Hvis du bare vil bruke bestemte verdier fra en tabell eller kolonne, kan du legge til filtre i formelen.

  • Hvis du trenger å tilpasse beregninger på rad-for-rad-basis, inneholder DAX funksjoner som lar deg bruke gjeldende radverdi eller en relatert verdi som en type argument for å utføre beregninger basert på konteksten. Du vil lære mer om kontekst senere.

  • DAX inneholder mange funksjoner som returnerer en tabell i stedet for en verdi. Tabellen vises ikke, men brukes til å gi inndata til andre funksjoner. Du kan for eksempel hente en tabell og deretter telle de distinkte verdiene i den, eller beregne dynamiske summer på tvers av filtrerte tabeller eller kolonner.

  • DAX inkluderer ulike tidsintelligensfunksjoner. Disse funksjonene lar deg definere eller velge datoområder og utføre dynamiske beregninger basert på dem. Du kan for eksempel sammenligne summer på tvers av parallelle perioder.

  • Excel har en populær funksjon, FINN.RAD. DAX-funksjoner tar ikke et celle- eller celleområde som en referanse som FINN.RAD gjør i Excel. DAX-funksjoner tar en kolonne eller en tabell som en referanse. Husk at i Power BI Desktop arbeider du med en relasjonsdatamodell. Det er enkelt å slå opp verdier i en annen tabell, og i de fleste tilfeller trenger du ikke å opprette formler i det hele tatt.

    Som du kan se, kan funksjoner i DAX hjelpe deg med å opprette kraftige formler. Vi rørte bare ved det grunnleggende om funksjoner. Etter hvert som DAX-ferdighetene vokser, oppretter du formler ved hjelp av mange forskjellige funksjoner. Et av de beste stedene å lære mer om hver av DAX-funksjonene er i DAX-funksjonsreferansen.

QuickQuiz-funksjoner

  1. Hva refererer en funksjon alltid til?
  2. Kan en formel inneholde mer enn én funksjon?
  3. Hvilken funksjonskategori vil du bruke til å kjede sammen to tekststrenger til én streng?

Svar er gitt på slutten av denne artikkelen.

Kontekst

Kontekst er et av de viktigste DAX-konseptene å forstå. Det finnes to typer kontekst i DAX: radkontekst og filterkontekst. Vi skal først se på radkontekst.

Radkontekst

Radkontekst er lettest tenkt som gjeldende rad. Den gjelder når en formel har en funksjon som bruker filtre for å identifisere én enkelt rad i en tabell. Funksjonen vil i seg selv bruke en radkontekst for hver rad i tabellen den filtrerer over. Denne typen radkontekst gjelder oftest for mål.

Filterkontekst

Filterkontekst er litt vanskeligere å forstå enn radkontekst. Du kan lettest tenke på filterkontekst som: Ett eller flere filtre som brukes i en beregning som bestemmer et resultat eller en verdi.

Filterkontekst finnes ikke i stedet for radkontekst. i stedet gjelder den i tillegg til radkontekst. Hvis du for eksempel vil begrense verdiene som skal inkluderes i en beregning ytterligere, kan du bruke en filterkontekst, som ikke bare angir radkonteksten, men også angir en bestemt verdi (filter) i den radkonteksten.

Filterkonteksten vises enkelt i rapportene. Når du for eksempel legger til TotalCost i en visualisering og deretter legger til År og Område, definerer du en filterkontekst som velger et delsett med data basert på et gitt år og område.

Hvorfor er filterkontekst så viktig for DAX? Du har sett at filterkonteksten kan brukes ved å legge til felt i en visualisering. Filterkontekst kan også brukes i en DAX-formel ved å definere et filter med funksjoner som ALL, RELATED, FILTER, CALCULATE, etter relasjoner og andre mål og kolonner. La oss for eksempel se på følgende formel i et mål kalt Butikksalg:

Mål for butikksalg

Hvis du vil forstå denne formelen bedre, kan vi dele den opp, omtrent som med andre formler.

Denne formelen inneholder følgende syntakselementer:

Svar. Målnavnet, Butikksalg.

B. Likhetstegnoperatoren (=), som angir begynnelsen av formelen.

C. CALCULATE-funksjonen, som evaluerer et uttrykk, som et argument, i en kontekst som endres av de angitte filtrene.

D. Parentes (), som omgir et uttrykk som inneholder ett eller flere argumenter.

E. Et mål [Totalt salg] i samme tabell som et uttrykk. Totalsalg-målet har formelen: =SUMMER(Salg[SalesAmount]).

F. Et komma (,), som skiller det første uttrykksargumentet fra filterargumentet.

G. Den fullstendige refererte kolonnen, Channel[ChannelName]. Dette er radkonteksten vår. Hver rad i denne kolonnen angir en kanal, for eksempel Store eller Online.

H. Den bestemte verdien, Store, som et filter. Dette er filterkonteksten vår.

Denne formelen sikrer at bare salgsverdier definert av totalsalgsmålet beregnes bare for rader i kolonnen Channel[ChannelName], der verdien Store brukes som filter.

Som du kan forestille deg, har det å kunne definere filterkontekst i en formel enorme og kraftige funksjoner. Muligheten til å referere til bare en bestemt verdi i en relatert tabell er bare ett slikt eksempel. Ikke bekymre deg hvis du ikke forstår konteksten helt umiddelbart. Når du oppretter dine egne formler, vil du bedre forstå kontekst og hvorfor det er så viktig i DAX.

Hurtigquiz for kontekst

  1. Hva er de to konteksttypene?
  2. Hva er filterkontekst?
  3. Hva er radkontekst?

Svar er gitt på slutten av denne artikkelen.

Sammendrag

Nå som du har en grunnleggende forståelse av de viktigste konseptene i DAX, kan du begynne å opprette DAX-formler for mål på egen hånd. DAX kan faktisk være litt vanskelig å lære, men det er mange ressurser tilgjengelig for deg. Når du har lest gjennom denne artikkelen og eksperimentert med noen av dine egne formler, kan du lære mer om andre DAX-konsepter og formler som kan hjelpe deg med å løse dine egne forretningsproblemer. Det finnes mange DAX-ressurser tilgjengelig for deg. det viktigste er DAX-referansen (Data Analysis Expressions).

Siden DAX har eksistert i flere år i andre Microsoft BI-verktøy, for eksempel Tabellmodeller for Power Pivot og Analysis Services, finnes det mange flotte kildeinformasjon der ute. Du finner mer informasjon i bøker, hvitbøker og blogger fra både Microsoft og ledende BI-eksperter. DAX Resource Center er også et flott sted å starte.

QuickQuiz-svar

Syntaks:

  1. Validerer og angir målet i modellen.
  2. Hakeparenteser [].

Funksjoner:

  1. En tabell og en kolonne.
  2. Ja. En formel kan inneholde opptil 64 nestede funksjoner.
  3. Tekstfunksjoner.

Kontekst:

  1. Radkontekst og filterkontekst.
  2. Ett eller flere filtre i en beregning som bestemmer én enkelt verdi.
  3. Gjeldende rad.