Denne delen inneholder koblinger til eksempler som demonstrerer bruken av DAX-formler i følgende scenarier.
- Utføre komplekse beregninger
- Arbeide med tekst og datoer
- Betingede verdier og testing for feil
- Bruke tidsintelligens
- Rangering og sammenligning av verdier
I denne artikkelen
Komme i gang
Gå til DAX Resource Center Wiki der du kan finne all slags informasjon om DAX, inkludert blogger, eksempler, hvitbøker og videoer levert av bransjeledende fagfolk og Microsoft.
Scenarier: Utføre komplekse beregninger
DAX-formler kan utføre kompliserte beregninger som involverer egendefinerte aggregasjoner, filtrering og bruk av betingede verdier. Denne delen inneholder eksempler på hvordan du kan komme i gang med egendefinerte beregninger.
Opprette egendefinerte beregninger for en pivottabell
CALCULATE og CALCULATETABLE er kraftige, fleksible funksjoner som er nyttige for å definere beregnede felt. Disse funksjonene lar deg endre konteksten som beregningen skal utføres i. Du kan også tilpasse typen aggregasjon eller matematisk operasjon som skal utføres. Se følgende emner for eksempler.
Bruke et filter på en formel
De fleste steder der en DAX-funksjon bruker en tabell som argument, kan du vanligvis sende en filtrert tabell i stedet, enten ved å bruke FILTER-funksjonen i stedet for tabellnavnet, eller ved å angi et filteruttrykk som ett av funksjonsargumentene. Emnene nedenfor inneholder eksempler på hvordan du oppretter filtre, og hvordan filtre påvirker formelresultatene. Hvis du vil ha mer informasjon, kan du se Filtrere data i DAX-formler.
FILTER-funksjonen lar deg angi filterkriterier ved hjelp av et uttrykk, mens de andre funksjonene er spesielt utformet for å filtrere ut tomme verdier.
Fjern filtre selektivt for å lage et dynamisk forhold
Ved å opprette dynamiske filtre i formler kan du enkelt besvare spørsmål som følgende:
- Hvor mye bidro salget av det nåværende produktet til det totale salget for året?
- Hvor mye har denne divisjonen bidratt til samlet overskudd for alle driftsår, sammenlignet med andre divisjoner?
Formler du bruker i en pivottabell, kan påvirkes av konteksten i pivottabellen, men du kan velge å endre konteksten ved å legge til eller fjerne filtre. Eksemplet i ALLE-emnet viser deg hvordan du gjør dette. Hvis du vil finne forholdet mellom salg for en bestemt forhandler og salget for alle forhandlere, oppretter du et mål som beregner verdien for gjeldende kontekst delt på verdien for ALLE-konteksten.
ALLEXCEPT-emnet inneholder et eksempel på hvordan du selektivt fjerner filtre i en formel. Begge eksemplene beskriver hvordan resultatene endres avhengig av utformingen av pivottabellen.
Hvis du vil se andre eksempler på hvordan du beregner nøkkeltall og prosentdeler, kan du se følgende emner:
Bruke en verdi fra en ytre løkke
I tillegg til å bruke verdier fra gjeldende kontekst i beregninger, kan DAX bruke en verdi fra en tidligere løkke til å opprette et sett med relaterte beregninger. Følgende emne gir en gjennomgang av hvordan du bygger en formel som refererer til en verdi fra en ytre løkke. EARLIER-funksjonen støtter opptil to nivåer med nestede løkker.
Hvis du vil lære mer om radkontekst og relaterte tabeller, og hvordan du bruker dette konseptet i formler, kan du se Kontekst i DAX-formler.
Scenarier: Arbeide med tekst og datoer
Denne delen inneholder koblinger til DAX-referanseemner som inneholder eksempler på vanlige scenarier som involverer arbeid med tekst, uttrekking og komponering av verdier for dato og klokkeslett, eller oppretting av verdier basert på en betingelse.
Opprette en nøkkelkolonne ved å kjede sammen
Power Pivot tillater ikke sammensatte nøkler. Hvis du har sammensatte nøkler i datakilden, kan det derfor hende du må kombinere dem til én enkelt nøkkelkolonne. Følgende emne inneholder ett eksempel på hvordan du oppretter en beregnet kolonne basert på en sammensatt nøkkel.
Compose a date based on date items extracted from a text date
Power Pivot bruker en dato/klokkeslett-datatype for SQL Server til å arbeide med datoer. Hvis de eksterne dataene inneholder datoer som er formatert på en annen måte, for eksempel hvis datoene er skrevet i et regionalt datoformat som ikke gjenkjennes av Power Pivot-datamotoren, eller hvis dataene bruker surrogatnøkler for heltall, kan det derfor hende du må bruke en DAX-formel til å trekke ut datodelene og deretter sette sammen delene til en gyldig dato/ tidsrepresentasjon.
Hvis du for eksempel har en kolonne med datoer som er blitt representert som et heltall og deretter importert som en tekststreng, kan du konvertere strengen til en dato/klokkeslett-verdi ved hjelp av følgende formel:
=DATO(HØYRE([Verdi1],4),VENSTRE([Verdi1],2),MIDT([Verdi1],2))
| Verdi1 | Resultat |
|---|---|
| 01032009 | 1/3/2009 |
| 12132008 | 12/13/2008 |
| 06252007 | 6/25/2007 |
De følgende emnene gir mer informasjon om funksjonene som brukes til å trekke ut og skrive datoer.
Definere et egendefinert dato- eller tallformat
Hvis dataene inneholder datoer eller tall som ikke er representert i et av standardformatene for Windows, kan du definere et egendefinert format for å sikre at verdiene behandles riktig. Disse formatene brukes når du konverterer verdier til strenger eller fra strenger. De følgende emnene gir også en detaljert liste over de forhåndsdefinerte formatene som er tilgjengelige for arbeid med datoer og tall.
- Forhåndsdefinerte tallformater for FORMAT-funksjonen
- Egendefinerte tallformater for FORMAT-funksjonen
- Forhåndsdefinerte dato- og klokkeslettformater for FORMAT-funksjonen
- Egendefinerte dato- og klokkeslettformater for FORMAT-funksjonen
Endre datatyper ved hjelp av en formel
I Power Pivot bestemmes datatypen for utdataene av kildekolonnene, og du kan ikke angi datatypen for resultatet eksplisitt, fordi den optimale datatypen bestemmes av Power Pivot. Du kan imidlertid bruke implisitte datatypekonverteringer utført av Power Pivot, til å manipulere utdatatypen.
- Hvis du vil konvertere en dato eller en tallstreng til et tall, multipliserer du med 1,0. Formelen nedenfor beregner for eksempel gjeldende dato minus 3 dager, og returnerer deretter den tilsvarende heltallsverdien.
=(IDAG()-3)*1,0 - Hvis du vil konvertere en dato, et tall eller en valutaverdi til en streng, kjeder du sammen verdien med en tom streng. Den følgende formelen returnerer for eksempel dagens dato som en streng.
=""& IDAG()
Følgende funksjoner kan også brukes til å sikre at en bestemt datatype returneres:
Konvertere reelle tall til heltall
- AVRUND, funksjon
- AVRUND.GJELDENDE.MULTIPLUM (funksjon)
-
AVRUND.GJELDENDE.MULTIPLUM.NED (funksjon)
Konvertere reelle tall, heltall eller datoer til strenger - FASTSATT (funksjon)
-
FORMAT-funksjon
Konvertere strenger til reelle tall eller datoer - VALUE, funksjon
- DATOVERDI, funksjon
- TIDSVERDI (funksjon)
Scenario: Betingede verdier og testing for feil
I likhet med Excel har DAX funksjoner som lar deg teste verdier i dataene og returnere en annen verdi basert på en betingelse. Du kan for eksempel opprette en beregnet kolonne som merker forhandlere som enten Foretrukket eller Verdi , avhengig av det årlige salgsbeløpet. Funksjoner som tester verdier, er også nyttige til å kontrollere området eller verditypen, for å hindre at uventede datafeil bryter beregninger.
Opprette en verdi basert på en betingelse
Du kan bruke nestede HVIS-betingelser til å teste verdier og generere nye verdier betinget. De følgende emnene inneholder noen enkle eksempler på betinget behandling og betingede verdier:
Test for feil i en formel
I motsetning til i Excel kan du ikke ha gyldige verdier i én rad i en beregnet kolonne og ugyldige verdier i en annen rad. Det vil si at hvis det oppstår en feil i en del av en Power Pivot-kolonne, flagges hele kolonnen med en feil, slik at du alltid må rette formelfeil som fører til ugyldige verdier.
Hvis du for eksempel lager en formel som dividerer med null, kan du få uendeligresultatet eller en feil. Noen formler vil også mislykkes hvis funksjonen støter på en tom verdi når den forventer en numerisk verdi. Når du utvikler datamodellen, er det best å tillate at feilene vises, slik at du kan klikke på meldingen og feilsøke problemet. Når du publiserer arbeidsbøker, bør du imidlertid inkludere feilbehandling for å hindre uventede verdier i beregningene.
Hvis du vil unngå å returnere feil i en beregnet kolonne, bruker du en kombinasjon av logiske funksjoner og informasjonsfunksjoner for å teste for feil og alltid returnere gyldige verdier. De følgende emnene inneholder noen enkle eksempler på hvordan du gjør dette i DAX:
Scenarioer: Bruke tidsintelligens
Tidsintelligensfunksjonene i DAX inneholder funksjoner som hjelper deg med å hente datoer eller datoområder fra dataene. Deretter kan du bruke disse datoene eller datoområdene til å beregne verdier på tvers av lignende perioder. Tidsintelligensfunksjonene inkluderer også funksjoner som fungerer med standard datointervaller, slik at du kan sammenligne verdier på tvers av måneder, år eller kvartaler. Du kan også lage en formel som sammenligner verdier for første og siste dato i en bestemt periode.
Hvis du vil ha en liste over alle tidsintelligensfunksjoner, kan du se Tidsintelligensfunksjoner (DAX). For tips om hvordan du bruker datoer og klokkeslett effektivt i en Power Pivot-analyse, se Datoer i Power Pivot.
Beregne kumulativt salg
Emnene nedenfor inneholder eksempler på hvordan du beregner utgående og inngående balanser. Med eksemplene kan du opprette løpende saldoer på tvers av ulike intervaller som dager, måneder, kvartaler eller år.
- CLOSINGBALANCEMONTH-funksjonen, CLOSINGBALANCEQUARTER-funksjonen, CLOSINGBALANCEYEAR-funksjonen
- OPENINGBALANCEMONTH-funksjonen, OPENINGBALANCEQUARTER-funksjonen, OPENINGBALANCEYEAR-funksjonen
Sammenligne verdier over tid
Emnene nedenfor inneholder eksempler på hvordan du sammenligner summer i ulike tidsperioder. Standard tidsperioder som støttes av DAX, er måneder, kvartaler og år.
- PREVIOUSMONTH-funksjonen, PREVIOUSQUARTER- og PREVIOUSYEAR-funksjonen
- TOTALMTD-funksjonen, TOTALQTD-funksjonen, TOTALYTD-funksjonen
- PARALLELPERIOD-funksjonen
Beregne en verdi for et egendefinert datoområde
Se følgende emner for å se eksempler på hvordan du henter egendefinerte datointervaller, for eksempel de første 15 dagene etter starten på en salgskampanje.
- DATESINPERIOD, funksjon
- DATESBETWEEN, funksjon
- DATEADD, funksjon
- FIRSTDATE, funksjon
- LASTDATE (funksjon)
Hvis du bruker tidsintelligensfunksjoner til å hente et egendefinert sett med datoer, kan du bruke dette settet med datoer som inndata til en funksjon som utfører beregninger, for å opprette egendefinerte mengder på tvers av tidsperioder. Se følgende emne for et eksempel på hvordan du gjør dette:
-
Obs!
Hvis du ikke trenger å angi et egendefinert datointervall, men arbeider med standard regnskapsenheter, for eksempel måneder, kvartaler eller år, anbefaler vi at du utfører beregninger ved hjelp av tidsintelligensfunksjoner som er utformet for dette formålet, for eksempel TOTALQTD, TOTALMTD, TOTALQTD og så videre.
Scenarier: Rangering og sammenligning av verdier
Hvis du bare vil vise det øverste n antallet elementer i en kolonne eller pivottabell, har du flere alternativer:
- Du kan bruke funksjonene i Excel til å opprette et Topp-filter. Du kan også velge et antall topp- eller bunnverdier i en pivottabell. Den første delen av denne delen beskriver hvordan du filtrerer etter de ti øverste elementene i en pivottabell. Hvis du vil ha mer informasjon, kan du se Excel-dokumentasjonen.
- Du kan opprette en formel som rangerer verdier dynamisk, og deretter filtrere etter rangeringsverdiene, eller bruke rangeringsverdien som en slicer. Den andre delen av denne delen beskriver hvordan du oppretter denne formelen og deretter bruker denne rangeringen i en slicer.
Det er fordeler og ulemper med hver metode.
- Toppfilteret i Excel er enkelt å bruke, men filteret brukes bare til visningsformål. Hvis de underliggende dataene i pivottabellen endres, må du oppdatere pivottabellen manuelt for å se endringene. Hvis du må arbeide dynamisk med rangeringer, kan du bruke DAX til å opprette en formel som sammenligner verdier med andre verdier i en kolonne.
- DAX-formelen er kraftigere. Ved å legge til rangeringsverdien i en slicer er det dessuten bare å klikke på sliceren for å endre antallet toppverdier som vises. Beregningene er imidlertid beregningsmessig dyre, og denne metoden er kanskje ikke egnet for tabeller med mange rader.
Vise bare de ti øverste elementene i en pivottabell
Slik viser du de høyeste eller laveste verdiene i en pivottabell
|
|---|
Sortere elementer dynamisk ved hjelp av en formel
Følgende emne inneholder et eksempel på hvordan du bruker DAX til å opprette en rangering som er lagret i en beregnet kolonne. DAX-formler beregnes dynamisk, og du kan alltid være sikker på at rangeringen er riktig, selv om de underliggende dataene er endret. Fordi formelen brukes i en beregnet kolonne, kan du også bruke rangeringen i en slicer og deretter velge verdiene for de øverste 5, de ti øverste eller til og med de 100 øverste verdiene.