Bruk grunnleggende for DAX i Power BI Desktop

Denne artikkelen er for brukere som ikke kjenner til Power BI Desktop. Den gir deg en rask og enkel innføring i hvordan du kan bruke Data Analysis Expressions (DAX) til å løse en rekke grunnleggende problemer tilknyttet beregninger og dataanalyse. Vi skal gå gjennom litt begrepsinformasjon, en rekke oppgaver du kan fullføre, og en kunnskaptest for å finne ut hva 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 av funksjoner, operatorer og konstanter som kan brukes i en formel eller et uttrykk til å beregne og returnere én eller flere verdier. Sagt enkelt, DAX hjelper deg å opprette ny informasjon fra dataene som allerede er i modellen din.

Hvorfor er DAX så viktig?

Det er enkelt å opprette en ny Power BI Desktop-fil og importere 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 vekst i prosentandeler på tvers av produktkategorier for ulike datointervall? Eller om du trenger å beregne vekst fra år til år og sammenligne med markedstrender? DAX-formler gir denne og mange andre viktige funksjonaliteter. Å lære hvordan du kan opprette effektive DAX-formler vil hjelpe deg å få mest mulig ut av dataene. Når du får informasjonen du trenger, kan du begynne å løse reelle forretningsproblemer som påvirker kjernevirksomheten. Dette er styrken med Power BI, og DAX vil hjelpe deg på veien.

Forutsetninger

Det kan være du allerede er kjent med å opprette formler i Microsoft Excel. Denne kunnskapen vil være nyttig for å forstå DAX, men selv hvis du ikke har noen erfaring med Excel-formler, vil begreper som beskrives her hjelpe deg å komme i gang med å opprette DAX-formler og løse BI-problemer fra den virkelige verden umiddelbart.

Vi skal konsentrere oss om å forstå DAX-formler som brukes i beregninger, nærmere bestemt i mål og beregnede kolonner. Du bør allerede være kjent med å bruke Power BI Desktop til å importere data og legge til felter i en rapport. Du bør også ha kjennskap til de grunnleggende begrepene Mål og Beregnede kolonner.

Eksempelarbeidsbok

Den beste måten å lære DAX på, er å opprette noen enkle formler, bruke dem med faktiske data, og se resultatene med egne øyne. Eksemplene og oppgavene her bruker Contosos salgseksempel for Power BI Desktop-filen. denne eksempel filen er den samme som brukes i opplæringen: opprett dine egne mål i Power BI Desktop artikkelen.

La oss begynne!

Vi skal ramme vår forståelse av DAX rundt tre grunnleggende konsepter: syntaks, funksjoner og kontekst. Det finnes andre viktige konsepter i DAX, men en forståelse av disse tre konseptene vil danne det beste grunnlaget å bygge DAX-ferdighetene på.

Syntaks

Før du oppretter dine egne formler, kan vi ta en titt på syntaks i DAX-formler. Syntaks omfatter de ulike elementene som utgjør en formel, eller rett og slett hvordan formelen skrives. Her er for eksempel en enkel DAX-formel for et mål:

DAX-formelsyntaks

Formelen har med følgende syntakselementer:

Av. Målnavnet, Total Sales.

B. Operatoren likhets tegn ( = ), som angir begynnelsen på formelen. Når den er beregnet, vil den returnere et resultat.

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

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

Via. Tabellen det refereres til, Sales.

S. Kolonnen det refereres til, [SalesAmount], i Sales-tabellen. Med dette argumentet vet SUM-funksjonen hvilken kolonne det skal aggregeres en SUM på.

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

Beregn (=) SUM av verdiene i [SalgBeløp]-kolonnen i Salg-tabellen for målet som heter Totalsalg.

Når dette legges til i en rapport, beregner og returnerer dette målet verdier ved å oppsummere salgstotalen for hvert av de andre feltene vi tar med, for eksempel Mobiltelefoner i USA.

Du tenker kanskje «Gjør ikke målet samme nytten som hvis jeg bare legger til SalesAmount-feltet til rapporten?» Vel, ja. Men det er en god grunn til å opprette vårt eget mål som oppsummerer verdiene fra SalgBeløp-feltet: Vi kan bruke det som et argument i andre formler. Dette kan virke litt forvirrende nå, men etterhvert som ferdighetene dine med DAX-formler vokser, vil formlene og modellene bli mer effektive når du kan dette målet. Du vil da faktisk se Totalsalg-målet, som vises som et argument i andre formler senere.

La oss se på noen flere ting vedrørende denne formelen. Særlig har vi innført 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 kan også se at [SalesAmount]-kolonnen ble etterfulgt av Sales-tabellen hvor kolonnen hører til. Dette er kjent som et fullstendig kvalifisert kolonnenavn siden det inkluderer kolonnenavnet som etterfølges av tabellnavnet. Når det refereres til kolonner i samme tabell, må ikke tabellnavnet inkluderes i formelen, noe som kan gjøre at lange formler som refererer til mange kolonner, blir kortere og enklere å lese. Det er imidlertid anbefalt fremgangsmåte å inkludere navnet på tabellen i målformlene, selv når du er i samme tabell.

Obs!

Hvis et tabellnavn inneholder mellomrom, reserverte nøkkelord eller ugyldige tegn, må du omslutte navnet på tabellen i enkle anførselstegn. Du må også sette tabellnavn i anførselstegn hvis navnet inneholder alle tegn som er utenfor det alfanumeriske ANSI-tegnsettet, uavhengig av om de nasjonale innstillingene støtter tegnsettet eller ei.

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

La oss opprette en enkel formel. Denne oppgaven vil hjelpe deg med ytterligere forstå formelsyntaks og hvordan forslagsfunksjonen i formellinjen kan hjelpe deg.

Oppgave: Opprette en målformel

  1. Last ned og åpne Power BI Desktop-filen Contoso-salgseksempel.

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

  3. I formellinjen erstatter du Mål ved å skrive inn et nytt målnavn: Previous Quarter Sales.

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

    Du skal bruke CALCULATE-funksjonen til å filtrere beløpene vi skal summere med et argument vi sender til CALCULATE-funksjonen. Dette kalles for nestingfunksjoner. CALCULATE-funksjonen har minst to argumenter. Det første er uttrykket som skal evalueres, og det andre er et filter.

  5. Etter venstreparentesen ( for CALCULATE-funksjonen skriver du inn SUM etterfulgt av en venstreparentes til (.

    Deretter skal vi sende et argument til SUM-funksjonen.

  6. Begynn å skrive inn Sal, og velg deretter Sales[SalesAmount] etterfulgt av en høyreparentes ).

    Dette er det første uttrykksargumentet for CALCULATE-funksjonen vår.

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

    Du skal bruke tidsintelligensfunksjonen PREVIOUSQUARTER til å filtrere SUM-resultatene etter forrige kvartal.

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

    PREVIOUSQUARTER-funksjonen har ett argument, en kolonne bestående av et sammenhengende område med datoer. I vårt tilfelle er dette DateKey-kolonnen i Calendar-tabellen.

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

    Formelen skal nå se slik ut:

    Salg for forrige kvartal = CALCULATE(SUM(Salg[SalgBeløp]), PREVIOUSQUARTER(Kalender[Datonøkkel]))

  10. Velg avmerkingen Avmerkingsikon Trykk på ENTER i formellinjen for å godkjenne formelen og legge den til i modellen.

Du klarte det! Du opprettet nettopp et komplekst mål ved hjelp av DAX, og ikke et enkelt et heller. Denne formelen beregner totalsalget for forrige kvartal, avhengig av filtrene som brukes i en rapport. Hvis vi for eksempel plasserer SalesAmount og vårt nye mål Previous Quarter Sales i et diagram, og deretter legger til Year og QuarterOfYear som slicere, får vi noe omtrent som dette:

Diagram over Previous Quarter Sales og SalesAmount

Du har nå blitt introdusert for flere viktige aspekter ved DAX-formler:

  • Denne formelen besto blant annet av to funksjoner. PREVIOUSQUARTER, en tidsintelligensfunksjon, er nestet som et argument og sendt til CALCULATE, en filterfunksjon.

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

  • I denne formelen brukte du også filtre. Filtre begrenser hva som blir beregnet. I dette tilfellet har du valgt et filter som et argument, noe som faktisk er resultatet av en annen funksjon. Du vil lære mer om filtre senere.

  • Du brukte CALCULATE-funksjonen. Dette er en av de kraftigste funksjonene i DAX. Når du oppretter modeller og mer komplekse formler, vil du sannsynligvis bruke denne funksjonen mange ganger. Vi går ikke nærmere inne på CALCULATE-funksjonen i denne artikkelen, men etterhvert som kunnskapene dine om DAX vokser, må du være spesielt oppmerksom på den.

Rask test om syntaks

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

    Knapputvalg

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

Du finner svar 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, 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 fremstå som like for deg. DAX-funksjoner er imidlertid unike på følgende måter:

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

  • Hvis du trenger å tilpasse beregninger på en rad-for-rad-basis, finner du funksjoner i DAX som lar deg bruke verdien for gjeldende rad eller en relatert verdi som et slags argument, for å utføre beregninger som varierer etter kontekst. Du vil lære mer om kontekst senere.

  • DAX inkluderer mange funksjoner som returnerer en tabell i stedet for en verdi. Tabellen vises ikke, men den brukes til å oppgi 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 en rekke tidsintelligensfunksjoner. Med disse funksjonene kan du definere eller velge datointervall, og utføre dynamiske beregninger basert på disse. Du kan for eksempel sammenligne summer på tvers av parallelle perioder.

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

    Som du ser, kan du bruke funksjoner i DAX til å opprette svært kraftige formler. Vi har faktisk bare kommet inn på det mest grunnleggende om funksjoner. Etterhvert som DAX-ferdighetene dine vokser, vil du opprette formler ved hjelp av mange forskjellige funksjoner. Ett av de beste stedene for å lære mer om hver av de ulike DAX-funksjonene er Referanse for DAX-funksjoner.

Rask test om funksjoner

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

Du finner svar på slutten av denne artikkelen.

Kontekst

Kontekst er én av de viktigste DAX-konseptene å sette seg inn i. Det finnes to typer kontekst i DAX: radkontekst og filterkontekst. Først skal vi se på radkonteksten.

Radkontekst

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

Filterkontekst

Filterkontekst er litt vanskeligere å forstå enn radkontekst. Du kan ganske enkelt betrakte filterkontekst som: ett eller flere filtre som brukes i en beregning som bestemmer et resultat eller en verdi.

Filterkontekst erstatter ikke radkontekst, den kommer i tillegg. For ytterligere å begrense verdiene som skal brukes i en beregning, kan du bruke en filterkontekst, som ikke bare angir radkonteksten, men også en bestemt verdi (filter) i den radkonteksten.

Filterkontekst er lett å se i rapportene. Når du legger til Totalpris til en visualisering, og deretter legger til År og Område, definerer du en filterkontekst som velger et delsett av data basert på et gitt år og område.

Hvorfor er filterkontekst så viktig for DAX? Fordi mens filterkonteksten enkelt kan brukes ved å legge til felt i en visualisering, kan filterkonteksten også kan brukes i en DAX-formel ved å definere et filter ved hjelp av funksjoner som ALL, RELATED, FILTER, CALCULATE, etter relasjoner, og etter andre mål og kolonner. La oss for eksempel ta en titt på følgende formel i et mål kalt Butikksalg:

Målet Store Sales

Vi kan dele opp denne formelen for bedre å forstå den, omtrent som med andre formler.

Formelen har med følgende syntakselementer:

Av. Målnavnet Store Sales.

B. Operatoren likhets tegn ( = ), som angir begynnelsen på formelen.

&. CALCULATE-funksjonen, som evaluerer et uttrykk som et argument, i en kontekst som er endret av de angitte filtrene.

Overflatediagram. Parentes (), som omslutter et uttrykk som inneholder ett eller flere argumenter.

Via. Et mål [Totalsalg] i den samme tabellen som et uttrykk. Totalsalg-målet inneholder formelen: = SUM(Salg[SalgBeløp]).

S. Et komma (,), som skiller argumentet med det første uttrykket fra filterargumentet.

Budsjett. Den fullstendig refererte kolonnen, Kanal [KanalNavn]. Dette er vår radkontekst. Hver rad i denne kolonnen angir en kanal: for eksempel Store eller Online.

&. Den bestemte verdien, Store, som et filter. Dette er vår filterkontekst.

Denne formelen sikrer at bare salgsverdier som er definert av Total Sales-målet, beregnes, og da bare for rader i Channel[ChannelName]-kolonnen med verdien Store brukt som filter.

Som du sikkert skjønner, så gir det enorme muligheter å kunne definere filterkontekst i en formel. Evnen til å referere til bare én bestemt verdi i en relatert tabell er bare ett slikt eksempel. Ikke bekymre deg hvis du ikke helt forstår kontekst med det samme. Når du oppretter dine egne formler, vil du bedre forstå kontekst og hvorfor det er så viktig i DAX.

Rask test om kontekst

  1. Hva er de to typene kontekst?
  2. Hva er filterkontekst?
  3. Hva er radkontekst?

Du finner svar på slutten av denne artikkelen.

Sammendrag

Nå som du har en grunnleggende forståelse av de viktigste konseptene i DAX, kan du begynne å lage DAX-formler for mål på egen hånd. DAX kan faktisk være litt vanskelig å lære, men mange ressurser er tilgjengelige for deg. Etter at 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 å løse dine egne forretningsproblemer. Mange DAX-ressurser er tilgjengelige for deg, og den viktigste er Data Analysis Expressions (DAX)-referansen.

DAX har eksistert i flere år i andre Microsoft BI-verktøy, for eksempel Power Pivot og Analysis Services-tabellmodeller, så det finnes mye god informasjon der ute. Du finner mer informasjon i bøker, hvitbøker og blogger fra både Microsoft og ledende BI-teknikere. DAX Resource Center Wiki på TechNet er også et bra sted å begynne.

Svar på de raske testene

Syntaks:

  1. Validerer og skriver inn 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 en enkeltverdi.
  3. Gjeldende rad.