Denne hurtigstarten er for brukere som ikke har brukt Power Pivot i Excel- eller tabellmodellprosjekter som er laget i SQL Server Data Tools. Det er ment å gi deg en rask og enkel innføring i hvordan du kan bruke DAX (Data Analysis Expressions) til å løse en rekke grunnleggende datamodellerings- og analyseproblemer. Dette emnet inneholder begrepsmessig informasjon, en rekke oppgaver du kan fullføre, og noen tester for å teste det du har lært. Når du har fullført dette emnet, bør du ha en god forståelse av de mest grunnleggende begrepene 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. DAX er enklere å si at du kan opprette ny informasjon fra data som allerede finnes i modellen.
Hvorfor er DAX så viktig?
Det er enkelt å opprette en arbeidsbok og importere data til den. Du kan også opprette pivottabeller eller pivotdiagrammer som viser viktig informasjon uten å bruke DAX-formler. Men hva om du trenger å analysere kritiske salgsdata på tvers av flere produktkategorier og for ulike datointervaller? Eller trenger du å kombinere viktige lagerdata fra flere tabeller i ulike datakilder? DAX-formler gir denne funksjonaliteten og mange andre viktige funksjoner også. Hvis du lærer hvordan du oppretter effektive DAX-formler, får du mest mulig ut av dataene. Når du får informasjonen du trenger, kan du begynne å løse reelle forretningsproblemer som påvirker bunnlinjen. Dette er Business Intelligence, og DAX hjelper deg med å komme dit.
Forutsetninger
Du er kanskje allerede kjent med å opprette formler i Microsoft Excel. 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 skal fokusere spesielt på å forstå DAX-formler som brukes i beregninger. Du bør allerede være kjent med grunnleggende begreper for både beregnede kolonner og mål (også kalt beregnede felt), som begge er beskrevet i Power Pivot Hjelp. Du bør også være kjent med Power Pivot i redigeringsmiljøet og verktøyene i Excel.
Eksempelarbeidsbok
Den beste måten å lære DAX på er å opprette noen grunnleggende formler, bruke den med noen faktiske data og se resultatene for deg selv. Eksemplene og oppgavene her bruker Contoso-eksempel-DAX-Formulas.xlsx-arbeidsboken. Du kan laste ned arbeidsboken fra http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Når du har lastet ned arbeidsboken på datamaskinen, åpner du den og åpner deretter vinduet Power Pivot.
La oss begynne!
Vi vil ramme DAX rundt tre svært viktige grunnleggende konsepter: Syntaks, funksjoner og kontekst. Selvfølgelig finnes det 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 rett og slett hvordan formelen skrives. La oss for eksempel se på en enkel DAX-formel som brukes til å opprette nye data (verdier) for hver rad i en beregnet kolonne, kalt Marg, i en FactSales-tabell: (formeltekstfarger er bare for illustrerende formål)
Denne formelens syntaks inkluderer følgende elementer:
-
Likhetstegnoperatoren (=) angir begynnelsen av formelen, og når denne formelen beregnes, returneres et resultat eller en verdi. Alle formler som beregner en verdi, begynner med et likhetstegn.
-
Den refererte kolonnen [SalesAmount] inneholder verdiene vi vil trekke fra. En kolonnereferanse i en formel er alltid omgitt av hakeparenteser []. I motsetning til Excel-formler som refererer til en celle, refererer en DAX-formel alltid til en kolonne.
-
Den matematiske operatoren subtraksjon (-).
-
Den refererte kolonnen [TotalCost] inneholder verdiene vi ønsker å trekke fra verdier i [SalesAmount]-kolonnen.
Når du prøver å forstå hvordan du leser 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 (=) en verdi ved å trekke (-) verdier i [ TotalCost]-kolonnen fra verdier i [SalesAmount]-kolonnen i FactSales-tabellen for hver rad i den beregnede kolonnen Margin.
La oss ta en titt på en annen type formel, en som brukes i et mål:
Denne formelen inneholder følgende syntakselementer:
-
Målnavnet Sum av salgsbeløp. Formler for mål kan inkludere målnavnet, etterfulgt av et kolon, etterfulgt av beregningsformelen.
-
Likhetstegnoperatoren (=) angir begynnelsen av beregningsformelen. Når den beregnes, returneres et resultat.
-
Funksjonen SUM legger sammen alle tallene i [SalesAmount]-kolonnen. Du vil lære mer om funksjoner senere.
-
Parentes () omslutter ett eller flere argumenter. Alle funksjoner krever minst ett argument. Et argument sender en verdi til en funksjon.
-
FactSales for den refererte tabellen.
-
Den refererte kolonnen [SalesAmount] i FactSales-tabellen. Med dette argumentet vet SUMMER-funksjonen hvilken kolonne som skal aggregeres en SUM.
Du kan lese denne formelen som:
Beregn (=) SUMMEN av verdiene i [ SalesAmount]-kolonnen i FactSales-tabellen for målet Sum of Sales Amount .
Når den plasseres i verdislippsonen i en feltliste for pivottabell, beregner og returnerer dette målet verdier definert av hver celle i pivottabellen, for eksempel mobiltelefoner i USA.
Legg merke til at det er et par ting annerledes med denne formelen sammenlignet med formelen vi brukte for den beregnede margkolonnen. Spesielt introduserte vi en funksjon, SUMMER. 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.
I motsetning til den beregnede kolonnen for marg tidligere, ser du at kolonnen [SalesAmount] ble innledet med factsales-tabellen der kolonnen tilhører. Dette kalles et fullstendig kvalifisert kolonnenavn ved at det inneholder kolonnenavnet foran tabellnavnet. Kolonner det refereres til i samme tabell, krever ikke at tabellnavnet inkluderes i formelen. Dette kan gjøre lange formler som refererer til mange kolonner kortere og enklere å lese. Det er imidlertid god praksis å alltid inkludere tabellnavnet i målformlene, selv når du er i samme tabell.
Obs!: Hvis navnet på en tabell inneholder mellomrom, reserverte nøkkelord eller ugyldige tegn, 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 svært 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 som forventet. Power Pivot (og SQL Server Data Tools) inkluderer IntelliSense; en funksjon som brukes til å opprette syntaktisk korrekte formler ved å hjelpe deg med å velge de riktige elementene.
La oss opprette en enkel formel. Denne oppgaven hjelper deg med å forstå formelsyntaksen ytterligere og hvordan IntelliSense-funksjonen på formellinjen kan hjelpe deg.
Oppgave: Opprette en enkel formel for en beregnet kolonne
-
Hvis du ikke allerede er i Power Pivot-vinduet, klikker du Power Pivot vindu på Power Pivot båndet i Excel.
-
Klikk FactSales-tabellen (fanen) i Power Pivot-vinduet.
-
Rull til kolonnen lengst til høyre, og klikk deretter Legg til kolonne i kolonneoverskriften.
-
Klikk på formellinjen øverst i vinduet for modellutforming.
Markøren vises nå på formellinjen. Formellinjen er der du kan skrive inn en formel for en beregnet kolonne eller et beregnet felt.
La oss ta deg tid til å se på de tre knappene til venstre for formellinjen.
Når markøren er aktiv på formellinjen, blir disse tre knappene aktive. Knappen lengst til venstre, X, er ganske enkelt en avbryt-knapp. Klikk på den. Markøren vises ikke lenger på formellinjen, og avbryt-knappen og merkeknappen vises ikke lenger. Klikk formellinjen på nytt. Avbryt-knappen og hakeknappen vises nå på nytt. Dette betyr at du er klar til å begynne å skrive inn en formel.
Hakeknappen er sjekkformelknappen. Det gjør ikke mye før du har skrevet inn en formel. Vi kommer tilbake til det om en liten stund.
Klikk Fx-knappen . Det vises en ny dialogboks. dialogboksen Sett inn funksjon. Dialogboksen Sett inn funksjon er den enkleste måten å komme i gang med å skrive inn en DAX-formel på. Vi legger til en funksjon i en formel når vi oppretter et mål litt senere, men foreløpig trenger du ikke å legge til en funksjon i den beregnede kolonneformelen. Lukk dialogboksen Sett inn funksjon.
-
Skriv inn et likhetstegn =på formellinjen, og skriv deretter inn en venstre klammeparentes [. Det vises et lite vindu med alle kolonnene i FactSales-tabellen. Dette er IntelliSense i aksjon.
Siden beregnede kolonner alltid opprettes i den aktive tabellen du er i, er det ikke nødvendig å sette tabellnavnet foran kolonnenavnet. Gå videre og rull ned, og dobbeltklikk deretter [SalesQuantity]. Du kan også bla til kolonnenavnet du vil bruke, og deretter trykke på TAB.
Markøren er nå aktiv til høyre for [SalesQuantity].
-
Skriv inn et mellomrom, og skriv deretter inn en subtraksjonsoperator - (et minustegn), og skriv deretter inn et annet mellomrom.
-
Skriv inn en annen venstre klammeparentes [. Denne gangen velger du kolonnen [ReturnQuantity] , og deretter trykker du enter.
Hvis du får en feilmelding, kan du se nøye på syntaksen. Hvis det er nødvendig, kan du sammenligne den med formelen i den beregnede margkolonnen som ble beskrevet tidligere.
Når du trykker ENTER for å fullføre formelen, vises ordet Kalkulering på statuslinjen nederst i Power Pivot-vinduet. Det går raskt, selv om du bare beregnet nye verdier for mer enn tre millioner rader.
-
Høyreklikk på kolonneoverskriften, og gi nytt navn til kolonnen NetSales.
Det var det! Du har nettopp opprettet en enkel, men svært kraftig DAX-formel. For hver rad i FactSales-tabellen beregner NetSales-formelen en verdi ved å trekke verdien i [ReturnQuantity]-kolonnen fra verdien i [SalesQuantity]-kolonnen. Legg merke til hvordan vi bare sa «For hver rad». Dette er et glimt av et annet svært viktig konsept i DAX; radkontekst. Du vil lære mer om radkontekst senere.
Noe som er veldig viktig å forstå når du skriver inn en operator i en DAX-formel, er datatypen i argumentene du bruker. Hvis du for eksempel skriver inn følgende formel, = 1 & 2, vil den returnerte verdien være en tekstverdi på «12». Dette er fordi operatoren for ampersand (&) er for sammenkobling av tekst. DAX tolker denne formelen for å lese: Beregne et resultat ved å ta verdien 1 som tekst og legge til verdi 2 som tekst. Hvis du nå skriver = 1 + 2, leser DAX denne formelen som: Beregn et resultat ved å ta den numeriske verdien 1 og legge til den numeriske verdien 2. Resultatet er selvfølgelig «3», en numerisk verdi. DAX beregner resulterende verdier avhengig av operatoren i formelen, ikke basert på datatypen for kolonner som brukes i argumentet. Datatyper i DAX er svært viktige, men utenfor omfanget til denne hurtigstarten. Hvis du vil lære mer om datatyper og operatorer i DAX-formler, kan du se DAX-referansen (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) i Books Online.
La oss prøve en annen. Denne gangen skal du opprette et mål ved å skrive inn formelen og ved hjelp av IntelliSense. Ikke bekymre deg for mye hvis du ikke helt forstår formelen. Det viktigste her er å lære hvordan du oppretter en formel ved hjelp av flere elementer sammen i riktig syntaks.
Oppgave: Opprette en målformel
-
Klikk i en tom celle i beregningsområdet i FactSales-tabellen . Dette er området med tomme celler rett under en tabell i Power Pivot-vinduet.
-
Skriv inn navnet Forrige kvartals salg på formellinjen:.
-
Skriv inn et likhetstegn = for å starte beregningsformelen.
-
Skriv inn de første bokstavene CAL, og dobbeltklikk deretter funksjonen du vil bruke. I denne formelen vil du bruke CALCULATE-funksjonen .
-
Skriv inn en venstreparentes (for å starte argumentene som skal sendes til CALCULATE-funksjonen.
Legg merke til at når du har skrevet inn venstreparentesen, viser IntelliSense argumentene som kreves for CALCULATE-funksjonen. Du kommer til å lære om argumenter om en liten stund.
-
Skriv inn de første bokstavene i FactSales-tabellen , og dobbeltklikk FactSales[Salg]i rullegardinlisten.
-
Skriv inn et komma (,) for å angi det første filteret, skriv deretter inn PRE, og dobbeltklikk deretter PREVIOUSQUARTER-funksjonen .
Når du har valgt PREVIOUSQUARTER-funksjonen, vises en annen venstreparentes som angir at et annet argument er nødvendig. denne gangen for PREVIOUSQUARTER-funksjonen.
-
Skriv inn de første bokstavene Dim, og dobbeltklikk deretter DimDate[DateKey].
-
Lukk både argumentet 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(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))
-
Klikk på kontroller formel-knappen på formellinjen for å validere formelen. Hvis du får en feil, må du kontrollere hvert element i syntaksen.
Du klarte det! Du har nettopp opprettet et mål ved hjelp av DAX, og ikke en enkel en på det. Hva denne formelen skal gjøre, er å beregne det totale salget for forrige kvartal, avhengig av filtrene som brukes i en pivottabell eller et pivotdiagram.
Du ble nettopp introdusert for flere viktige aspekter ved DAX-formler. Først inkluderte denne formelen to funksjoner. Legg merke til at PREVIOUSQUARTER-funksjonen er nestet som et argument som sendes til CALCULATE-funksjonen . DAX-formler kan inneholde opptil 64 nestede funksjoner. Det er lite sannsynlig at en formel noensinne vil inneholde så mange nestede funksjoner. Faktisk ville en slik formel være svært vanskelig å opprette og feilsøke, og det ville sannsynligvis ikke være veldig fort heller.
I denne formelen brukte du også filtre. Filtre begrenser hva som skal beregnes. I dette tilfellet valgte du ett filter som argument, som faktisk er en annen funksjon. Du vil lære mer om filtre senere.
Til slutt brukte du CALCULATE-funksjonen. Dette er en av de kraftigste funksjonene i DAX. Når du oppretter datamodeller og oppretter mer komplekse formler, vil du sannsynligvis bruke denne funksjonen mange ganger. Å diskutere CALCULATE-funksjonen er utenfor omfanget av hurtigstarten, men etter hvert som kunnskapen din om DAX vokser, bør du være spesielt oppmerksom på denne.
Obs!: Vanligvis må du angi en unik datokolonne ved hjelp av dialogboksen Merk som datotabell for å kunne bruke tidsintelligensfunksjoner i DAX-formler. I DaX-formelarbeidsboken contoso Samples.xlsx velges DateKey-kolonnen i DimDate-tabellen som den unike datokolonnen.
Ekstra kreditt
Du spør kanskje: «Hva er den enkleste DAX-formelen jeg kan opprette?» Vel, svaret på det er "formelen du ikke trenger å". Og det er akkurat det du kan gjøre ved hjelp av en standard aggregasjonsfunksjon i et mål. Nesten alle datamodeller må filtrere og beregne på aggregerte data. SUMMER-funksjonen i summen av salgsbeløpet du så tidligere, brukes for eksempel til å legge sammen alle tallene i en bestemt kolonne. DAX inkluderer også flere andre funksjoner som aggregerer verdier. Du kan automatisk opprette formler ved hjelp av standardaggregasjoner ved hjelp av Autosummer-funksjonen.
Ekstra kredittoppgave: Opprett en målformel ved hjelp av Autosummer-funksjonen
-
Rull til ReturnQuantity-kolonnen i FactSales-tabellen, og klikk deretter på kolonneoverskriften for å merke hele kolonnen.
-
Klikk Autosummer-knappen i Beregninger-gruppen på Hjem-fanen på båndet.
Klikk pil ned ved siden av Autosummer, og klikk deretter Gjennomsnitt (legg merke til de andre standardaggregasjonsfunksjonene du også kan bruke).
Umiddelbart opprettes et nytt mål med navnet Average of ReturnQuantity, etterfulgt av formelen =GJENNOMSNITT([ReturnQuantity]).
Var ikke det lett nå? Selvfølgelig vil ikke alle formler du oppretter være så enkle. Ved hjelp av Autosummer-funksjonen kan du imidlertid opprette raske og enkle formler ved hjelp av standard aggregasjonsberegninger.
Dette bør gi deg en ganske god forståelse av syntaksen som brukes i DAX-formler. Du ble også introdusert for noen veldig stilige funksjoner som IntelliSense og Autosummer for å hjelpe deg med å opprette raske, enkle og nøyaktige formler. Selvfølgelig er det mye mer du kan lære om syntaks. Et godt sted å lære mer er DAX-referansen eller SQL Books Online.
Hurtigquiz for syntaks
-
Hva gjør denne knappen på formellinjen?
-
Hva omslutter alltid et kolonnenavn i en DAX-formel?
-
Hvordan skriver du en formel for følgende:
I DimProduct-tabellen beregner du en verdi ved å trekke verdier i UnitCost-kolonnen fra verdier i UnitPrice-kolonnen for hver rad i den unitmarginberegnede kolonnen?
Svarene gis på slutten av dette emnet.
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, kolonnereferanser, tall, tekst, logiske verdier som SANN eller USANN eller konstanter.
DAX inkluderer følgende kategorier av funksjoner: Funksjoner for dato og klokkeslett, informasjon, logisk, matematisk, statistisk, tekst og tidsintelligens. Hvis du er kjent med funksjoner i Excel-formler, vil mange av funksjonene i DAX se ut 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, til å utføre beregninger som varierer etter kontekst. 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 en rekke tidsintelligensfunksjoner. Med disse funksjonene kan du definere eller velge datointervaller og utføre dynamiske beregninger basert på dem. Du kan for eksempel sammenligne summer på tvers av parallelle perioder.
Noen ganger er det vanskelig å vite hvilke funksjoner du kanskje må bruke i en formel. Power Pivot, og tabellmodellutformingen i SQL Server Data Tools, inkluderer Funksjonen Sett inn funksjon, en dialogboks som hjelper deg med å velge funksjoner etter kategori og gir korte beskrivelser for hver funksjon.
La oss opprette en ny formel som inneholder en funksjon du velger ved hjelp av funksjonen Sett inn funksjon:
Oppgave: Legge til en funksjon i en formel ved hjelp av Sett inn funksjon
-
Rull til kolonnen lengst til høyre i FactSales-tabellen, og klikk deretter Legg til kolonne i kolonneoverskriften.
-
Skriv inn et likhetstegn på formellinjen, =.
-
Klikk Sett inn funksjon-knappen . Dette åpner dialogboksen Sett inn funksjon .
-
Klikk boksen Velg en kategori i dialogboksen Sett inn funksjon. Som standard er Alle valgt, og alle funksjonene i Alle-kategorien er oppført nedenfor. Det er mange funksjoner, så du bør filtrere funksjonene for å gjøre det enklere å finne funksjonstypen du leter etter.
-
I denne formelen vil du returnere noen data som allerede finnes i en annen tabell. For dette skal du bruke en funksjon i filterkategorien. Gå videre og klikk filterkategorien , og rull ned og dobbeltklikk RELATED-funksjonen i Velg en funksjon. Klikk OK for å lukke dialogboksen Sett inn funksjon.
-
Bruk IntelliSense til å hjelpe deg med å finne og velge Kolonnen DimChannel[ChannelName].
-
Lukk formelen, og trykk deretter ENTER.
-
Når du trykker ENTER for å fullføre formelen, vises ordet Kalkulering på statuslinjen nederst i Power Pivot-vinduet. Nå ser du at du nettopp har opprettet en ny kolonne i FactSales-tabellen med kanalinformasjon fra DimChannel-tabellen.
-
Gi nytt navn til kolonnen Kanal.
Formelen skal se slik ut: =RELATED(DimChannel[ChannelName])
Du ble nettopp introdusert til en annen svært viktig funksjon i DAX, RELATED-funksjonen . RELATED-funksjonen returnerer verdier fra en annen tabell. Du kan bruke RELATED forutsatt at det er en relasjon mellom tabellen du er i, og tabellen som inneholder verdiene du vil hente. Selvfølgelig har RELATED-funksjonen enorme muligheter. I dette tilfellet kan du nå inkludere salgskanalen for hvert salg i FactSales-tabellen. Du kan nå skjule DimChannel-tabellen fra feltlisten for pivottabellen, noe som gjør det enklere å navigere og bare se den viktigste informasjonen du virkelig trenger. I likhet med CALCULATE-funksjonen som ble beskrevet tidligere, er RELATED-funksjonen svært viktig, og du vil sannsynligvis bruke den mange ganger.
Som du kan se, kan funksjoner i DAX hjelpe deg med å opprette svært kraftige formler. Vi rørte egentlig bare ved det grunnleggende om funksjoner. Etter hvert som DAX-ferdighetene blir bedre, vil du opprette formler ved hjelp av mange forskjellige funksjoner. Et av de beste stedene å lære mer om alle DAX-funksjonene er i DAX-referansen (Data Analysis Expressions).
Hurtigquiz-funksjoner
-
Hva refererer en funksjon alltid til?
-
Kan en formel inneholde mer enn én funksjon?
-
Hvilken funksjonskategori bruker du til å sette sammen to tekststrenger til én streng?
Svarene gis på slutten av dette emnet.
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. Husker du for eksempel den beregnede margkolonnen du så tidligere når du lærte om syntaks? Formelen =[SalesAmount] - [TotalCost] beregner en verdi i Marg-kolonnen for hver rad i tabellen. Verdier for hver rad beregnes fra verdier i to andre kolonner, [SalesAmount] og [TotalCost] i samme rad. DAX kan beregne verdiene for hver rad i margkolonnen fordi den har konteksten: For hver rad tar den verdier i [TotalCost]-kolonnen og trekker dem fra verdier i [SalesAmount]-kolonnen.
I den merkede cellen som vises nedenfor, ble verdien kr 49,54 i gjeldende rad beregnet ved å trekke verdien kr 51,54 i [TotalCost]-kolonnen fra verdien kr 101,08 i [SalesAmount]-kolonnen.
Radkontekst gjelder ikke bare for beregnede kolonner. Radkontekst gjelder også når en formel har en funksjon som bruker filtre til å 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 enkelt 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 bare en bestemt verdi (filter) i denne radkonteksten.
Filterkontekst er lett å se i pivottabeller. Når du for eksempel legger til TotalCost i Verdier-området og deretter legger til År og Område i raden eller kolonnene, 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? Siden filterkonteksten enkelt kan brukes ved å legge til kolonne- og radetiketter og slicere i en pivottabell, kan filterkontekst også brukes i en DAX-formel ved å definere et filter ved hjelp av funksjoner som ALL, RELATED, FILTER, CALCULATE, etter relasjoner og av andre mål og kolonner. La oss for eksempel se på følgende formel i et mål kalt StoreSales:
Denne formelen er tydeligvis mer kompleks enn noen av de andre formlene du har sett. Hvis du vil forstå denne formelen bedre, kan vi imidlertid dele den opp, på samme måte som vi har gjort med andre formler.
Denne formelen inneholder følgende syntakselementer:
-
Målnavnet StoreSales, etterfulgt av et kolon :.
-
Likhetstegnoperatoren (=) angir begynnelsen av formelen.
-
CALCULATE-funksjonen evaluerer et uttrykk, som et argument, i en kontekst som endres av de angitte filtrene.
-
Parentes () omslutter ett eller flere argumenter.
-
Et mål [Salg] i samme tabell som et uttrykk. Salgsmålet har formelen: =SUMMER(FactSales[SalesAmount]).
-
Et komma (,) skiller hvert filter.
-
Den refererte kolonnen og en bestemt verdi, DimChannel[ChannelName] ="Store", som et filter.
Denne formelen sikrer at bare salgsverdier, definert av Salgsmål, som et filter, beregnes bare for rader i Kolonnen DimChannel[ChannelName] med verdien «Store», som et filter.
Som du kan forestille deg, har muligheten til å definere filterkontekst i en formel enorm og kraftig funksjon. Å kunne referere bare til 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
-
Hva er de to konteksttypene?
-
Hva er filterkontekst?
-
Hva er radkontekst?
Svarene gis på slutten av dette emnet.
Sammendrag
Nå som du har en grunnleggende forståelse av de viktigste konseptene i DAX, kan du begynne å opprette DAX-formler for beregnede kolonner og 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 dette emnet et par ganger 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 i hjelpen for Power Pivot, SQL Server Books Online, hvitbøker og blogger fra både Microsoft og ledende BI-eksperter. Wikien for DAX-ressurssenteret (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) er et flott sted å starte. Dax-referansen (Data Analysis Expressions) er også en flott ressurs. Pass på å lagre den i Favoritter.
Hvitboken DAX i bi-tabellmodellen, som er tilgjengelig for nedlasting (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), gir en mer detaljert oversikt over konseptene som introduseres her, i tillegg til mange andre avanserte konsepter og formler. Denne hvitboken bruker også den samme Contoso DAX-eksempel Formulas.xlsx arbeidsboken du allerede har.
QuickQuiz-svar
Syntaks:
-
Åpner funksjonen Sett inn funksjon.
-
Hakeparenteser [].
-
=[Enhetspris] - [UnitCost]
Funksjoner:
-
En tabell og en kolonne.
-
Ja. En formel kan inneholde opptil 64 nestede funksjoner.
Sammenheng:
-
Radkontekst og filterkontekst.
-
Ett eller flere filtre i en beregning som bestemmer én enkelt verdi.
-
Gjeldende rad.