Denne Hurtig introduktion er for brugere, der ikke har brugt Power Pivot i Excel eller tabelmodelprojekter, der er oprettet i SQL Server Data Tools. Den er beregnet til at give dig en hurtig og nem introduktion til, hvordan du kan bruge DAX (Data Analysis Expressions) til at løse en række grundlæggende datamodellerings- og analyseproblemer. Dette emne indeholder grundlæggende oplysninger, en række opgaver, du kan udføre, og et par tests for at teste det, du har lært. Når du har fuldført dette emne, bør du have en god forståelse af de mest grundlæggende begreber i DAX.
Hvad er DAX?
DAX er en samling funktioner, operatorer og konstanter, der kan bruges i en formel eller et udtryk til at beregne og returnere en eller flere værdier. Sagt helt enkelt hjælper DAX dig med at oprette nye oplysninger fra data, der allerede findes i din model.
Hvorfor er DAX så vigtigt?
Det er nemt at oprette en projektmappe og importere nogle data til den. Du kan endda oprette pivottabeller eller pivotdiagrammer, der viser vigtige oplysninger uden at bruge DAX-formler. Men hvad hvis du har brug for at analysere vigtige salgsdata på tværs af flere produktkategorier og for forskellige datointervaller? Eller du har brug for at kombinere vigtige lagerdata fra flere tabeller i forskellige datakilder? DAX-formler indeholder denne funktion og mange andre vigtige funktioner. Hvis du lærer at oprette effektive DAX-formler, kan du få mest muligt ud af dine data. Når du får de oplysninger, du har brug for, kan du begynde at løse reelle forretningsproblemer, der påvirker bundlinjen. Dette er Business Intelligence, og DAX kan hjælpe dig med at finde dertil.
Forudsætninger
Du er muligvis allerede bekendt med at oprette formler i Microsoft Excel. Denne viden kan være nyttig til at forstå DAX, men selvom du ikke har nogen erfaring med Excel-formler, vil de begreber, der er beskrevet her, hjælpe dig med at komme i gang med at oprette DAX-formler og løse reelle BI-problemer med det samme.
Vi fokuserer specifikt på at forstå DAX-formler, der bruges i beregninger. Du bør allerede kende til grundlæggende begreber for både beregnede kolonner og målinger (også kaldet beregnede felter), som er beskrevet i Power Pivot Hjælp. Du bør også have kendskab til Power Pivot i Excel-oprettelsesmiljøet og -værktøjerne.
Eksempelprojektmappe
Den bedste måde at lære DAX på er at oprette nogle grundlæggende formler, bruge det med nogle faktiske data og selv se resultaterne. Eksemplerne og opgaverne her bruger Contoso-eksempelprojektmappen DAX Formulas.xlsx. Du kan hente projektmappen fra http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Når projektmappen er hentet til computeren, skal du åbne den og derefter åbne Power Pivot-vinduet.
Lad os begynde!
Vi indrammer DAX omkring tre meget vigtige grundlæggende begreber: Syntaks, funktioner og kontekst. Der er selvfølgelig andre vigtige begreber i DAX, men hvis du forstår disse tre begreber, får du det bedste grundlag for at opbygge dine DAX-færdigheder.
Syntaks
Før du opretter dine egne formler, skal vi se på syntaksen for DAX-formler. Syntaks omfatter de forskellige elementer, der udgør en formel, eller mere enkelt, hvordan formlen er skrevet. Lad os f.eks. se på en simpel DAX-formel, der bruges til at oprette nye data (værdier) for hver række i en beregnet kolonne med navnet Margen i en FactSales-tabel: (tekstfarver i formler er kun til illustration)
Denne formels syntaks omfatter følgende elementer:
- Lighedstegnoperatoren (=) angiver starten af formlen, og når denne formel beregnes, returneres et resultat eller en værdi. Alle formler, der beregner en værdi, begynder med et lighedstegn.
- Kolonnen, der refereres til, [Salgsbeløb] indeholder de værdier, vi vil subtrahere fra. En kolonnereference i en formel er altid omgivet af parenteser []. I modsætning til Excel-formler, der refererer til en celle, refererer en DAX-formel altid til en kolonne.
- Den matematiske subtraktionsoperator (-).
- Kolonnen, der refereres til, [TotalCost] indeholder de værdier, vi vil trække fra værdier i kolonnen [SalesAmount].
Når du forsøger at forstå, hvordan du læser en DAX-formel, er det ofte nyttigt at opdele hvert af elementerne i et sprog, du tænker og taler hver dag. Du kan f.eks. læse denne formel som:
I tabellen FactSales skal du for hver række i den beregnede margenkolonne beregne (=) en værdi ved at trække (-)-værdierne i kolonnen [TotalCost] fra værdierne i kolonnen [SalesAmount].
Lad os se nærmere på en anden type formel, nemlig en, der anvendes i en måling:
Denne formel indeholder følgende syntakselementer:
- Navnet på målingen Summen af salgsbeløbet. Formler for målinger kan indeholde navnet på målingen efterfulgt af et kolon efterfulgt af beregningsformlen.
- Lighedstegnsoperatoren (=) angiver starten af beregningsformlen. Når det beregnes, returneres der et resultat.
- Funktionen SUM adderer alle tallene i kolonnen [Salgsbeløb]. Du vil få mere at vide om funktioner senere.
- Parentes () omgiver et eller flere argumenter. Alle funktioner kræver mindst ét argument. Et argument videregiver en værdi til en funktion.
- Den refererede tabel FactSales.
- Den refererede kolonne [SalesAmount] i tabellen FactSales. Med dette argument ved SUM-funktionen, hvilken kolonne der skal aggregeres en SUM i.
Du kan læse denne formel som:
For den navngivne sum af salgsbeløb beregnes (=) summen af værdierne i kolonnen [Salgsbeløb] i tabellen Salgsfakta.
Når denne måling placeres i placeringszonen Værdier i en pivottabelfeltliste, beregner og returnerer den værdier, der er defineret af hver celle i pivottabellen, f.eks. mobiltelefoner i USA.
Bemærk, at der er et par ting, der er anderledes ved denne formel sammenlignet med den formel, vi brugte til den beregnede margenkolonne. Især introducerede vi en funktion, SUM. Funktioner er forudskrevne formler, som gør det nemmere at udføre komplekse beregninger og manipulationer med tal, datoer, klokkeslæt, tekst og meget mere. Du vil få mere at vide om funktioner senere.
I modsætning til den beregnede kolonne Margen, kan du se, at kolonnen [SalesAmount] blev indledt af tabellen FactSales, som kolonnen tilhører. Dette er kendt som et fuldt kvalificeret kolonnenavn, da det indeholder kolonnenavnet med tabelnavnet foran. Kolonner, der refereres til i den samme tabel, kræver ikke, at tabelnavnet medtages i formlen. Dette kan gøre lange formler, der refererer til mange kolonner, kortere og nemmere at læse. Det er dog god altid at medtage tabelnavnet i dine målingsformler, også selvom du er i den samme tabel.
Bemærk
Hvis navnet på en tabel indeholder mellemrum, reserverede nøgleord eller ikke-tilladte tegn, skal du sætte tabelnavnet i enkelte anførselstegn. Du skal også sætte tabelnavne i anførselstegn, hvis navnet indeholder tegn uden for det alfanumeriske ANSI-tegnområde, uanset om din landestandard understøtter tegnsættet eller ej.
Det er meget vigtigt, at dine formler har den korrekte syntaks. Hvis syntaksen i de fleste tilfælde ikke er korrekt, returneres der en syntaksfejl. I andre tilfælde kan syntaksen være korrekt, men de returnerede værdier er måske ikke det, du forventer. Power Pivot (og SQL Server Data Tools) indeholder IntelliSense, en funktion, der bruges til at oprette syntaktisk korrekte formler ved at hjælpe dig med at vælge de rigtige elementer.
Lad os oprette en simpel formel. Denne opgave hjælper dig med yderligere at forstå formelsyntaksen, og hvordan funktionen IntelliSense på formellinjen kan hjælpe dig.
Opgave: Oprette en simpel formel for en beregnet kolonne
- Hvis du ikke allerede er i Power Pivot-vinduet i Excel, skal du klikke på Power Pivot-vinduet på Power Pivot-båndet.
- Klik på tabellen FactSales (fane) i Power Pivot-vinduet.
- Rul til kolonnen længst til højre, og klik derefter på Tilføj kolonne i kolonneoverskriften.
- Klik på formellinjen langs toppen af vinduet Model designer.
Markøren vises nu på formellinjen. Formellinjen er det sted, hvor du kan skrive en formel for en beregnet kolonne eller et beregnet felt.
Lad os bruge et øjeblik på at se på de tre knapper til venstre for formellinjen.
Når markøren er aktiv på formellinjen, bliver disse tre knapper aktive. Knappen længst til venstre, X'et, er ganske enkelt en annuller-knap. Fortsæt, og klik på det. Markøren vises ikke længere på formellinjen, og knappen Annuller og afkrydsningsknappen vises ikke længere. Fortsæt, og klik i formellinjen igen. Knappen Annuller og fluebenet vises nu igen. Det betyder, at du er klar til at begynde at indtaste en formel.
Markeringsknappen er knappen Kontrollér formel. Det gør ikke meget, før du har angivet en formel. Vi vender tilbage til det om lidt.
Klik på knappen Fx . Der vises en ny dialogboks. dialogboksen Indsæt funktion. Dialogboksen Indsæt funktion er den nemmeste måde at komme i gang med at indtaste en DAX-formel på. Vi føjer en funktion til en formel, når vi opretter en måling lidt senere, men lige nu behøver du ikke at føje en funktion til formlen for den beregnede kolonne. Fortsæt med at lukke dialogboksen Indsæt funktion. - Skriv et lighedstegn = på formellinjen, og skriv derefter en venstreparentes [. Du får vist et lille vindue med alle kolonnerne i tabellen FactSales. Dette er IntelliSense i aktion.
Da beregnede kolonner altid oprettes i den aktive tabel, du arbejder i, er der ingen grund til at sætte tabelnavnet foran kolonnenavnet. Fortsæt med at rulle ned, og dobbeltklik derefter på [SalesQuantity]. Du kan også rulle ned til det ønskede kolonnenavn og derefter trykke på tabulatortasten.
Markøren er nu aktiv til højre for [SalesQuantity]. - Skriv et mellemrum, og indtast derefter en subtraktionsoperator - (et minustegn), og indtast derefter et andet mellemrum.
- Skriv nu en anden venstreparentes [. Denne gang skal du vælge kolonnen [ReturnQuantity] og derefter trykke på Enter.
Hvis du får en fejlmeddelelse, skal du kontrollere syntaksen nøje. Sammenlign den med formlen i den beregnede kolonne Margen, der er beskrevet tidligere.
Når du trykker på Enter for at fuldføre formlen, vises ordet Beregner på statuslinjen nederst i Power Pivot-vinduet. Det går hurtigt, selvom du lige har beregnet nye værdier for mere end tre millioner rækker. - Højreklik på kolonneoverskriften, og omdøb kolonnen til NetSales.
Det var det! Du har lige oprettet en enkel og effektiv DAX-formel. For hver række i tabellen FactSales beregner formlen NetSales en værdi ved at trække værdien i kolonnen [ReturnQuantity] fra værdien i kolonnen [SalesQuantity]. Bemærk, hvordan vi lige sagde "For hver række". Dette er et glimt af et andet meget vigtigt begreb i DAX; række kontekst. Du vil få mere at vide om rækkekontekst senere.
Noget, der er meget vigtigt at forstå, når du skriver en operator i en DAX-formel, er datatypen i de argumenter, du bruger. Hvis du f.eks. skriver følgende formel, = 1 & 2, vil den værdi, der returneres, være tekstværdien "12". Dette skyldes, at operatoren for og-tegnet (&) er til tekstsammenføjning. DAX fortolker denne formel således: Beregn et resultat ved at tage værdien 1 som tekst og addere værdien 2 som tekst. Hvis du nu skriver = 1 + 2, læser DAX denne formel som: Beregn et resultat ved at tage den numeriske værdi 1 og lægge den numeriske værdi 2 til. Resultatet er selvfølgelig "3", en numerisk værdi. DAX beregner slutværdier afhængigt af operatoren i formlen og ikke baseret på datatypen for de kolonner, der bruges i argumentet. Datatyper i DAX er meget vigtige, men uden for denne Hurtig starts område. Du kan få mere at vide om datatyper og operatorer i DAX-formler i DAX-referencen (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) i Books Online.
Lad os prøve en anden. Denne gang skal du oprette en måling ved at skrive formlen og ved hjælp af IntelliSense. Du skal ikke bekymre dig for meget, hvis du ikke helt forstår formlen. Det vigtige her er at lære, hvordan du opretter en formel ved hjælp af flere elementer samlet i korrekt syntaks.
Opgave: Oprette en måleformel
- Klik i en tom celle i beregningsområdet i tabellen FactSales . Dette er området med tomme celler lige under en tabel i Power Pivot-vinduet.
- Skriv navnet Salg i forrige kvartal på formellinjen.
- Skriv et lighedstegn = for at starte beregningsformlen.
- Skriv de første par bogstaver CAL, og dobbeltklik derefter på den funktion, du vil bruge. I denne formel vil du bruge funktionen CALCULATE .
- Skriv en venstreparentes (for at begynde de argumenter, der skal overføres til funktionen CALCULATE).
Bemærk, at når du har indtastet startparentesen, viser IntelliSense dig de argumenter, der er nødvendige for funktionen CALCULATE. Du lærer lidt om argumenter. - Skriv de første par bogstaver i tabellen FactSales , og dobbeltklik derefter på FactSales[Sales] på rullelisten.
- Skriv et komma (,) for at angive det første filter, skriv derefter, PRE, og dobbeltklik derefter på funktionen PREVIOUSQUARTER .
Når du har valgt funktionen PREVIOUSQUARTER, vises en anden venstreparentes, der angiver, at der kræves et andet argument. denne gang for funktionen PREVIOUSQUARTER. - Skriv de første par bogstaver Dim, og dobbeltklik derefter på DimDate[DateKey].
- Luk både det argument, der overføres til funktionen PREVIOUSQUARTER, og funktionen CALCULATE ved at skrive to højreparenteser )).
Formlen bør nu se nogenlunde sådan ud:
Salg forrige kvartal:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey])) - Klik på knappen Kontrollér formel på formellinjen for at validere formlen. Hvis du får en fejl, skal du kontrollere hvert element i syntaksen.
Du klarede det! Du har lige oprettet en måling ved hjælp af DAX, og det er ikke en nem en. Denne formel vil gøre ved at beregne det samlede salg for det forrige kvartal, afhængigt af de filtre, der anvendes i en pivottabel eller et pivotdiagram.
Du er lige blevet introduceret til flere vigtige aspekter af DAX-formler. For det første omfattede denne formel to funktioner. Bemærk, at funktionen PREVIOUSQUARTER er indlejret som et argument, der videregives til funktionen CALCULATE . DAX-formler kan indeholde op til 64 indlejrede funktioner. Det er usandsynligt, at en formel nogensinde vil indeholde så mange indlejrede funktioner. Faktisk ville en sådan formel være meget svær at oprette og fejlfinde, og den ville sandsynligvis heller ikke være særlig hurtig.
I denne formel har du også brugt filtre. Filtre begrænser, hvad der beregnes. I dette tilfælde har du valgt ét filter som argument, hvilket faktisk er en anden funktion. Du vil få mere at vide om filtre senere.
Til sidst brugte du funktionen CALCULATE. Dette er en af de mest effektive funktioner i DAX. I takt med at du opretter datamodeller og opretter mere komplekse formler, vil du sandsynligvis bruge denne funktion mange gange. Denne hurtige introduktion omfatter ikke en diskussion af funktionen CALCULATE, men i takt med at dit kendskab til DAX vokser, skal du være særligt opmærksom på dette.
Bemærk
Før du kan bruge Time Intelligence-funktioner i DAX-formler, skal du typisk angive en entydig datokolonne ved hjælp af dialogboksen Markér som datotabel. I projektmappen Contoso DAX-formel Samples.xlsx er kolonnen DateKey i tabellen DimDate valgt som den entydige datokolonne.
Ekstra kredit
Du spørger måske: 'Hvad er den enkleste DAX-formel, jeg kan oprette?' Svaret på det er "den formel, du ikke behøver at". Og det er præcis, hvad du kan gøre ved at bruge en standardsammenlægningsfunktion i en måling. Næsten alle datamodeller skal filtrere og beregne på aggregerede data. F.eks. bruges funktionen SUM i målingen Summen af salgsbeløb, som du så tidligere, til at beregne summen af alle tallene i en bestemt kolonne. DAX indeholder også flere andre funktioner, som sammenlægger værdier. Du kan oprette formler automatisk ved hjælp af standardsammenlægninger ved hjælp af funktionen Autosum.
Opgave med ekstra merit: Opret en måleformel ved hjælp af funktionen Autosum
- Rul ned til kolonnen ReturnQuantity i tabellen FactSales, og klik derefter på kolonneoverskriften for at markere hele kolonnen.
- Klik på knappen AutoSum i gruppen Beregninger under fanen Startside i gruppen Beregninger.
Klik på pil ned ud for Autosum, og klik derefter på Gennemsnit (bemærk de andre standardsammenlægningsfunktioner, du også kan bruge).
Straks oprettes en ny måling med navnet Average of ReturnQuantity: efterfulgt af formlen =AVERAGE([ReturnQuantity]).
Var det ikke nemt? Selvfølgelig vil ikke alle formler, du opretter, være så enkle. Men ved hjælp af funktionen Autosum kan du hurtigt og nemt oprette formler ved hjælp af standardsammenlægningsberegninger.
Dette skulle give dig en ret god forståelse af den syntaks, der anvendes i DAX-formler. Du blev også introduceret til nogle virkelig smarte funktioner som IntelliSense og Autosum, der kan hjælpe dig med at oprette hurtige, nemme og nøjagtige formler. Der er selvfølgelig meget mere, du kan lære om syntaks. Et godt sted at få mere at vide er DAX Reference eller SQL Books Online.
Syntaks QuickQuiz
- Hvad gør denne knap på formellinjen?
- Hvad omgiver altid et kolonnenavn i en DAX-formel?
- Hvordan vil du skrive en formel for følgende:
Beregne en værdi i tabellen DimProduct for hver række i den beregnede kolonne Enhedsmargin ved at trække værdierne i kolonnen Enhedspris fra værdierne i kolonnen Enhedspris?
Du kan finde svarene sidst i dette emne.
Funktioner
Funktioner er foruddefinerede formler, der udfører beregninger ved hjælp af bestemte værdier, også kaldet argumenter, i en bestemt rækkefølge eller struktur. Argumenter kan være andre funktioner, en anden formel, kolonnereferencer, tal, tekst, logiske værdier som SAND og FALSK eller konstanter.
DAX indeholder følgende kategorier af funktioner: dato og klokkeslæt, oplysninger, logikke, matematiske, statistiske, tekst- og tidsintelligensfunktioner. Hvis du kender funktionerne i Excel-formler, ligner mange af funktionerne i DAX dig. DAX-funktioner er dog entydige på følgende måder:
- En DAX-funktion refererer altid til en hel 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 vil tilpasse beregninger række for række, indeholder DAX funktioner, der gør det muligt at bruge den aktuelle rækkeværdi eller en relateret værdi som en slags argument til at udføre beregninger, der varierer i forhold til konteksten. Du vil få mere at vide om kontekst senere.
- DAX indeholder mange funktioner, som 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 indeholder en række forskellige tidsintelligente funktioner. Med disse funktioner kan du definere eller vælge datointervaller og udføre dynamiske beregninger på baggrund af dem. Du kan f.eks. sammenligne summer på tværs af parallelle perioder.
Nogle gange er det svært at vide, hvilke funktioner du måske skal bruge i en formel. Power Pivot og tabelmodeldesigneren i SQL Server Data Tools indeholder funktionen Indsæt funktion, som er en dialogboks, der hjælper dig med at vælge funktioner efter kategori og indeholder korte beskrivelser af hver funktion.
Lad os oprette en ny formel, som indeholder en funktion, du vælger ved hjælp af funktionen Indsæt funktion:
Opgave: Føje en funktion til en formel ved hjælp af Indsæt funktion
- Rul ned til kolonnen yderst til højre i tabellen FactSales, og klik derefter på Tilføj kolonne i kolonneoverskriften.
- Skriv et lighedstegn på formellinjen, =.
- Klik på knappen Indsæt funktion .
Dette åbner dialogboksen Indsæt funktion . - Klik på listen Vælg en kategori i dialogboksen Indsæt funktion. Som standard er Alle markeret, og alle funktionerne i kategorien Alle er angivet nedenfor. Det er mange funktioner, så det er en god ide at filtrere funktionerne for at gøre det lettere at finde den type funktion, du leder efter.
- Til denne formel vil du returnere nogle data, der allerede findes i en anden tabel. Til det skal du bruge en funktion i kategorien Filter. Gå videre og klik på kategorien Filter , og rul derefter ned i Vælg en funktion, og dobbeltklik på funktionen RELATED. Klik på OK for at lukke dialogboksen Indsæt funktion .
- Brug IntelliSense til at hjælpe dig med at finde og vælge kolonnen DimChannel[ChannelName].
- Luk formlen, og tryk derefter på Enter.
- Når du trykker på Enter for at fuldføre formlen, vises ordet Beregner på statuslinjen nederst i Power Pivot-vinduet. Nu kan du se, at du lige har oprettet en ny kolonne i tabellen FactSales med kanaloplysninger fra tabellen DimChannel.
- Omdøb kolonnen til Kanal.
Formlen skal se sådan ud: =RELATED(DimChannel[ChannelName])
Du er lige blevet introduceret til en anden meget vigtig funktion i DAX, nemlig funktionen RELATED . Funktionen RELATERET returnerer værdier fra en anden tabel. Du kan bruge RELATED, forudsat at der er en relation mellem den tabel, du aktuelt befinder dig i, og den tabel, der indeholder de værdier, du vil have. Selvfølgelig har funktionen RELATERET enorme muligheder. I dette tilfælde kan du nu medtage salgskanalen for hvert salg i tabellen FactSales. Du kan nu skjule DimChannel-tabellen fra pivottabellens feltliste, hvilket gør den nemmere at navigere og kun se de vigtigste oplysninger, du virkelig har brug for. Meget ligesom funktionen CALCULATE, der er beskrevet tidligere, er funktionen RELATED meget vigtig, og du vil sandsynligvis bruge den mange gange.
Som du kan se, kan funktioner i DAX hjælpe dig med at oprette meget effektive formler. Vi har egentlig kun berørt det grundlæggende i funktioner. Efterhånden som dine DAX-færdigheder forbedres, kan du oprette formler med mange forskellige funktioner. Et af de bedste steder, hvor du kan lære mere om alle DAX-funktionerne, er i DAX-referencen (Data Analysis Expressions).
QuickQuiz til funktioner
- Hvad refererer en funktion altid til?
- Kan en formel indeholde mere end én funktion?
- Hvilken kategori af funktioner ville du bruge til at sammenkæde to tekststrenge i én streng?
Du kan finde svarene sidst i dette emne.
Kontekst
Kontekst er et af de vigtigste DAX-begreber at forstå. Der findes to typer kontekst i DAX. rækkekontekst og filterkontekst. Vi ser først på rækkekonteksten.
Rækkekontekst
Rækkekontekst er nemmest tænkt som den aktuelle række. Kan du f.eks. huske den beregnede kolonne Margen, som du så tidligere, da du lærte om syntaks? Formlen =[Salgsbeløb] - [SamletOmkostning] beregner en værdi i kolonnen Margen for hver række i tabellen. Værdierne for hver række beregnes ud fra værdierne i to andre kolonner, [Salgsbeløb] og [SamletOmkostning] i samme række. DAX kan beregne værdierne for hver række i kolonnen Margen, fordi den har konteksten: For hver række tager den værdierne i kolonnen [TotalCost] og trækker dem fra værdierne i kolonnen [Salgsbeløb].
I den markerede celle, der er vist nedenfor, blev værdien, DKK 49,54 i den aktuelle række, beregnet ved at trække værdien DKK 51,54 i kolonnen [TotalCost] fra værdien DKK 101,08 i kolonnen [Salgsbeløb].
Rækkekontekst gælder ikke kun for beregnede kolonner. Rækkekontekst gælder også, når en formel har en funktion, der anvender filtre til at identificere en enkelt række i en tabel. Funktionen vil i sagens natur 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 nemmest tænke på filterkontekst som: Et eller flere filtre anvendt i en beregning, der bestemmer et resultat eller en værdi.
Filterkontekst findes ikke i stedet for rækkekontekst. I stedet gælder den ud over rækkekonteksten. Hvis du f.eks. yderligere vil indskrænke de værdier, der skal medtages i en beregning, kan du anvende en filterkontekst, som ikke kun angiver rækkekonteksten, men også angiver kun en bestemt værdi (filter) i den pågældende rækkekontekst.
Filterkontekst ses nemt i pivottabeller. Når du f.eks. føjer TotalCost til området Værdier og derefter tilføjer År og Område til rækken eller kolonnerne, definerer du en filterkontekst, der vælger et undersæt af data baseret på et bestemt år og område.
Hvorfor er filterkontekst så vigtig for DAX? For mens filterkontekst nemmest kan anvendes ved at tilføje kolonne- og rækkemærkater og udsnit i en pivottabel, kan filterkontekst også anvendes i en DAX-formel ved at definere et filter ved hjælp af funktioner som ALL, RELATED, FILTER, CALCULATE, by relationships og by other measures and columns. Lad os for eksempel se på følgende formel i en måling med navnet StoreSales:
Denne formel er tydeligvis mere kompleks end nogle af de andre formler, du har set. Men for bedre at forstå denne formel kan vi opdele den, meget lig som vi har gjort med andre formler.
Denne formel indeholder følgende syntakselementer:
- Navnet på målingen StoreSales efterfulgt af et kolon :.
- Lighedstegnsoperatoren (=) angiver starten af formlen.
- Funktionen CALCULATE evaluerer et udtryk som et argument i en kontekst, der ændres af de angivne filtre.
- Parentes () omgiver et eller flere argumenter.
- En måling [Salg] i samme tabel som et udtryk. Målingen Salg har formlen: =SUM(FactSales[SalesAmount]).
- Et komma (,) adskiller hvert filter.
- Den refererede kolonne og en bestemt værdi, DimChannel[ChannelName] ="Store", som et filter.
Denne formel sikrer, at kun salgsværdier, der er defineret af målingen Salg, som et filter, kun beregnes for rækker i kolonnen DimChannel[ChannelName] med værdien "Store" som filter.
Som du sikkert kan se, har det en enorm og effektiv funktionalitet at definere filterkontekst i en formel. At kunne referere til en bestemt værdi i en relateret tabel er blot et eksempel af dette. Fortvivl ikke, hvis du ikke helt forstår konteksten med det samme. Når du opretter dine egne formler, kan du bedre forstå sammenhængen, og hvorfor den er så vigtig i DAX.
Kontekst QuickQuiz
- Hvad er de to typer kontekst?
- Hvad er filterkontekst?
- Hvad er rækkekontekst?
Du kan finde svarene sidst i dette emne.
Resumé
Nu, hvor du har en grundlæggende forståelse af de vigtigste begreber i DAX, kan du begynde at oprette DAX-formler til beregnede kolonner og målinger på egen hånd. DAX kan faktisk være lidt svært at lære, men der er mange ressourcer tilgængelige for dig. Når du har læst dette emne nogle gange og eksperimenteret med dine egne formler, kan du få mere at vide om andre DAX-begreber og -formler, som kan hjælpe dig med at løse dine egne forretningsmæssige problemer. Der er mange DAX-ressourcer tilgængelige for dig i Power Pivot Hjælp, SQL Server Books Online, hvidbøger og blogge fra både Microsoft og førende BI-fagfolk. DAX Resource Center Wiki (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) er et godt sted at starte. Referencen til dataanalyseudtryk (DAX) er også en god ressource. Sørg for at gemme den i dine Favoritter.
Hvidbogen om DAX in the BI Tabular Model, der kan downloades (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), giver et mere detaljeret indblik i de begreber, der er introduceret her, samt mange andre avancerede koncepter og formler. Denne hvidbog bruger også det samme Contoso DAX-eksempel Formulas.xlsx projektmappe, som du allerede har.
QuickQuiz-svar
Syntaks:
- Åbner funktionen Indsæt funktion.
- Kantede parenteser [].
- =[Enhedspris] - [Enhedspris]
Funktioner:
- En tabel og en kolonne.
- Ja. En formel kan indeholde op til 64 indlejrede funktioner.
- Tekstfunktioner.
Kontekst:
- Rækkekontekst og filterkontekst.
- Et eller flere filtre i en beregning, der bestemmer en enkelt værdi.
- Den aktuelle række.