DAX (Data Analysis Expressions) lyder lidt skræmmende i starten, men lad ikke navnet narre dig. DAX grundlæggende er virkelig ret let at forstå. Første ting først - DAX er IKKE et programmeringssprog. DAX er et formelsprog. Du kan bruge DAX til at definere brugerdefinerede beregninger for beregnede kolonner og målinger (også kaldet beregnede felter). DAX indeholder nogle af de funktioner, der bruges i Excel-formler, og yderligere funktioner, der er udviklet til at arbejde med relationelle data og udføre dynamisk sammenlægning.
Forstå DAX-formler
DAX-formler minder meget om Excel-formler. Hvis du vil oprette et, skal du skrive et lighedstegn efterfulgt af et funktionsnavn eller udtryk og eventuelle påkrævede værdier eller argumenter. Ligesom Excel indeholder DAX en række funktioner, som du kan bruge til at arbejde med strenge, udføre beregninger ved hjælp af datoer og klokkeslæt eller oprette betingede værdier.
DAX-formler er dog forskellige på følgende vigtige måder:
-
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 til at udføre beregninger, der varierer efter kontekst.
-
DAX indeholder en funktionstype, der returnerer en tabel som resultat i stedet for en enkelt værdi. Disse funktioner kan bruges til at give input til andre funktioner.
-
Time Intelligence-funktioner i DAX tillader beregninger ved hjælp af datointervaller og sammenligner resultaterne på tværs af parallelle perioder.
Her kan du bruge DAX-formler
Du kan oprette formler i Power Pivot enten i beregnede columner eller i beregnedef-ields.
Beregnede kolonner
En beregnet kolonne er en kolonne, du føjer til en eksisterende Power Pivot tabel. I stedet for at indsætte eller importere værdier i kolonnen opretter du en DAX-formel, der definerer kolonneværdierne. Hvis du medtager den Power Pivot tabel i en pivottabel (eller et pivotdiagram), kan den beregnede kolonne bruges på samme måde som enhver anden datakolonne.
Formlerne i beregnede kolonner svarer meget til de formler, du opretter i Excel. I modsætning til i Excel kan du dog ikke oprette en anden formel for forskellige rækker i en tabel. I stedet anvendes DAX-formlen automatisk på hele kolonnen.
Når en kolonne indeholder en formel, beregnes værdien for hver række. Resultaterne beregnes for kolonnen, så snart du opretter formlen. Kolonneværdier genberegnes kun, hvis de underliggende data opdateres, eller hvis der bruges manuel genberegning.
Du kan oprette beregnede kolonner, der er baseret på målinger og andre beregnede kolonner. Undgå dog at bruge det samme navn til en beregnet kolonne og en måling, da dette kan føre til forvirrende resultater. Når du refererer til en kolonne, er det bedst at bruge en fuldt kvalificeret kolonnereference for at undgå utilsigtet at aktivere en måling.
Du kan finde mere detaljerede oplysninger under Beregnede kolonner i Power Pivot.
Foranstaltninger
En måling er en formel, der er oprettet specifikt til brug i en pivottabel (eller et pivotdiagram), der bruger Power Pivot data. Målinger kan være baseret på standardsammenlægningsfunktioner, f.eks. TÆL eller SUM, eller du kan definere din egen formel ved hjælp af DAX. En måling bruges i området Værdier i en pivottabel. Hvis du vil placere beregnede resultater i et andet område i en pivottabel, skal du bruge en beregnet kolonne i stedet.
Når du definerer en formel for en eksplicit måling, sker der ingenting, før du tilføjer målingen i en pivottabel. Når du tilføjer målingen, evalueres formlen for hver celle i området Værdier i pivottabellen. Da der oprettes et resultat for hver kombination af række- og kolonneoverskrifter, kan resultatet for målingen være forskelligt i hver celle.
Definitionen af den måling, du opretter, gemmes med dens kildedatatabel. Den vises på listen Pivottabelfelter og er tilgængelig for alle brugere af projektmappen.
Du finder flere oplysninger under Målinger i Power Pivot.
Oprette formler ved hjælp af formellinjen
Power Pivot, f.eks. Excel, indeholder en formellinje, der gør det nemmere at oprette og redigere formler og autofuldførelsesfunktionalitet for at minimere skrive- og syntaksfejl.
Sådan angiver du navnet på en tabel Begynd at skrive navnet på tabellen. Autofuldførelse af formel indeholder en rulleliste, der indeholder gyldige navne, der begynder med disse bogstaver.
Sådan angiver du navnet på en kolonne Skriv en parentes, og vælg derefter kolonnen på listen over kolonner i den aktuelle tabel. Begynd at skrive de første bogstaver i tabelnavnet for en kolonne fra en anden tabel, og vælg derefter kolonnen på rullelisten Autofuldførelse.
Du kan finde flere oplysninger og en gennemgang af, hvordan du opretter formler, under Opret formler til beregninger i Power Pivot.
Tip til brug af Autofuldførelse
Du kan bruge Autofuldførelse af formel midt i en eksisterende formel med indlejrede funktioner. Teksten umiddelbart før indsætningspunktet bruges til at vise værdier på rullelisten, og hele teksten efter indsætningspunktet forbliver uændret.
Definerede navne, du opretter for konstanter, vises ikke på rullelisten Autofuldførelse, men du kan stadig skrive dem.
Power Pivot tilføjer ikke den afsluttende parentes for funktioner eller matcher automatisk parenteser. Du skal sørge for, at hver funktion er syntaktisk korrekt, eller at du ikke kan gemme eller bruge formlen.
Brug af flere funktioner i en formel
Du kan indlejre funktioner, hvilket betyder, at du bruger resultaterne fra én funktion som argument for en anden funktion. Du kan indlejre op til 64 funktionsniveauer i beregnede kolonner. Indlejring kan dog gøre det svært at oprette eller foretage fejlfinding af formler.
Mange DAX-funktioner er designet til at blive brugt udelukkende som indlejrede funktioner. Disse funktioner returnerer en tabel, som derfor ikke kan gemmes direkte. det skal angives som input til en tabelfunktion. Funktionerne SUMX, AVERAGEX og MINX kræver f.eks. alle en tabel som det første argument.
Bemærk!: Der findes nogle begrænsninger for indlejring af funktioner i målinger for at sikre, at ydeevnen ikke påvirkes af de mange beregninger, der kræves af afhængigheder mellem kolonner.
Sammenligning af DAX-funktioner og Excel-funktioner
Funktionsbiblioteket DAX er baseret på Excel-funktionsbiblioteket, men bibliotekerne har mange forskelle. Dette afsnit opsummerer forskellene og ligheder mellem Excel-funktioner og DAX-funktioner.
-
Mange DAX-funktioner har samme navn og den samme generelle funktionsmåde som Excel-funktioner, men er blevet ændret for at tage forskellige typer input, og i nogle tilfælde kan de returnere en anden datatype. Generelt kan du ikke bruge DAX-funktioner i en Excel-formel eller bruge Excel-formler i Power Pivot uden nogen ændring.
-
DAX-funktioner tager aldrig en cellereference eller et område som reference, men i stedet tager DAX-funktioner en kolonne eller tabel som reference.
-
DAX-dato- og klokkeslætsfunktioner returnerer en datetime-datatype. I modsætning hertil returnerer Excel-dato- og klokkeslætsfunktioner et heltal, der repræsenterer en dato som et serienummer.
-
Mange af de nye DAX-funktioner returnerer enten en tabel med værdier eller foretager beregninger baseret på en tabel med værdier som input. I modsætning hertil har Excel ingen funktioner, der returnerer en tabel, men nogle funktioner kan arbejde med matrixer. Muligheden for nemt at henvise til komplette tabeller og kolonner er en ny funktion i Power Pivot.
-
DAX indeholder nye opslagsfunktioner, der ligner matrix- og vektoropslagsfunktionerne i Excel. DAX-funktionerne kræver dog, at der oprettes en relation mellem tabellerne.
-
Dataene i en kolonne forventes altid at være af samme datatype. Hvis dataene ikke er af samme type, ændrer DAX hele kolonnen til den datatype, der bedst passer til alle værdier.
DAX-datatyper
Du kan importere data til en Power Pivot datamodel fra mange forskellige datakilder, der muligvis understøtter forskellige datatyper. Når du importerer eller indlæser dataene og derefter bruger dataene i beregninger eller pivottabeller, konverteres dataene til en af de Power Pivot datatyper. Du kan se en liste over datatyperne under Datatyper i datamodeller.
Tabeldatatypen er en ny datatype i DAX, der bruges som input eller output til mange nye funktioner. Funktionen FILTRER tager f.eks. en tabel som input og returnerer en anden tabel, der kun indeholder de rækker, der opfylder filterbetingelserne. Ved at kombinere tabelfunktioner med sammenlægningsfunktioner kan du udføre komplekse beregninger over dynamisk definerede datasæt. Du kan få mere at vide under Sammenlægninger i Power Pivot.
Formler og den relationelle model
Vinduet Power Pivoter et område, hvor du kan arbejde med flere tabeller med data og forbinde tabellerne i en relationel model. I denne datamodel er tabeller forbundet med hinanden ved hjælp af relationer, hvilket giver dig mulighed for at oprette korrelationer med kolonner i andre tabeller og oprette mere interessante beregninger. Du kan f.eks. oprette formler, der summerer værdier for en relateret tabel og derefter gemme denne værdi i en enkelt celle. Eller hvis du vil styre rækkerne fra den relaterede tabel, kan du anvende filtre på tabeller og kolonner. Du kan få mere at vide under Relationer mellem tabeller i en datamodel.
Da du kan sammenkæde tabeller ved hjælp af relationer, kan dine pivottabeller også indeholde data fra flere kolonner, der er fra forskellige tabeller.
Men da formler kan arbejde med hele tabeller og kolonner, skal du designe beregninger anderledes end i Excel.
-
Generelt anvendes en DAX-formel i en kolonne altid på hele sættet med værdier i kolonnen (aldrig til kun nogle få rækker eller celler).
-
Tabeller i Power Pivot skal altid have det samme antal kolonner i hver række, og alle rækker i en kolonne skal indeholde den samme datatype.
-
Når tabeller er forbundet af en relation, forventes det, at de to kolonner, der bruges som nøgler, for det meste har værdier, der svarer til hinanden. Da Power Pivot ikke gennemtvinger referentiel integritet, er det muligt at have ikke-matchende værdier i en nøglekolonne og stadig oprette en relation. Tilstedeværelsen af tomme eller ikke-matchende værdier kan dog påvirke resultaterne af formler og udseendet af pivottabeller. Du kan finde flere oplysninger under Opslag i Power Pivot-formler.
-
Når du sammenkæder tabeller ved hjælp af relationer, forstørrer du omfanget eller c-teksten, hvori dine formler evalueres. Formler i en pivottabel kan f.eks. blive påvirket af filtre eller kolonne- og rækkeoverskrifter i pivottabellen. Du kan skrive formler, der manipulerer konteksten, men konteksten kan også få dine resultater til at ændre sig på måder, som du måske ikke forventer. Du kan få mere at vide under Kontekst i DAX-formler.
Opdatere resultaterne af formler
Data r efresh og genberegning er to separate, men relaterede handlinger, som du bør forstå, når du designer en datamodel, der indeholder komplekse formler, store mængder data eller data, der er hentet fra eksterne datakilder.
Opdatering af data er processen med at opdatere dataene i projektmappen med nye data fra en ekstern datakilde. Du kan opdatere data manuelt med intervaller, du angiver. Hvis du har publiceret projektmappen på et SharePoint-websted, kan du planlægge en automatisk opdatering fra eksterne kilder.
Genberegning er den proces, hvor resultaterne af formler opdateres for at afspejle eventuelle ændringer i selve formlerne og for at afspejle disse ændringer i de underliggende data. Genberegning kan påvirke ydeevnen på følgende måder:
-
For en beregnet kolonne bør resultatet af formlen altid genberegnes for hele kolonnen, hver gang du ændrer formlen.
-
For en måling beregnes resultaterne af en formel ikke, før målingen er placeret i konteksten af pivottabellen eller pivotdiagrammet. Formlen genberegnes også, når du ændrer en række- eller kolonneoverskrift, der påvirker filtre på dataene, eller når du manuelt opdaterer pivottabellen.
Fejlfinding af formler
Fejl ved skrivning af formler
Hvis du får en fejl, når du definerer en formel, kan formlen indeholde enten en syntaktisk fejl, en semantisk fejl eller en beregningsfejl.
Syntaktiske fejl er de nemmeste at løse. De involverer typisk en manglende parentes eller komma. Du kan finde hjælp til syntaksen for individuelle funktioner i DAX-funktionsreferencen.
Den anden type fejl opstår, når syntaksen er korrekt, men den værdi eller kolonne, der refereres til, giver ikke mening i formlens kontekst. Sådanne semantiske fejl og beregningsfejl kan skyldes et af følgende problemer:
-
Formlen refererer til en ikke-eksisterende kolonne, tabel eller funktion.
-
Formlen ser ud til at være korrekt, men når dataprogrammet henter dataene, finder det en typeuoverensstemmelse og giver en fejl.
-
Formlen overfører et forkert tal eller en forkert type parametre til en funktion.
-
Formlen refererer til en anden kolonne, der indeholder en fejl, og derfor er dens værdier ugyldige.
-
Formlen refererer til en kolonne, der ikke er blevet behandlet, hvilket betyder, at den har metadata, men ingen faktiske data, der skal bruges til beregninger.
I de første fire tilfælde markerer DAX hele kolonnen, der indeholder den ugyldige formel. I det sidste tilfælde nedtones kolonnen i DAX for at angive, at kolonnen er i en uforarbejdet tilstand.
Forkerte eller usædvanlige resultater ved rangering eller sortering af kolonneværdier
Når du rangerer eller sorterer en kolonne, der indeholder værdien NaN (Ikke et tal), kan du få forkerte eller uventede resultater. Når en beregning f.eks. dividerer 0 med 0, returneres et NaN-resultat.
Dette skyldes, at formelprogrammet udfører sortering og rangering ved at sammenligne de numeriske værdier. NaN kan dog ikke sammenlignes med andre tal i kolonnen.
For at sikre korrekte resultater kan du bruge betingede sætninger ved hjælp af funktionen HVIS til at teste for NaN-værdier og returnere en numerisk 0-værdi.
Kompatibilitet med Analysis Services-tabelmodeller og DirectQuery-tilstand
Generelt er DAX-formler, som du opretter i Power Pivot , helt kompatible med tabelmodeller i Analysis Services. Men hvis du overfører din Power Pivot -model til en Analysis Services-forekomst og derefter installerer modellen i DirectQuery-tilstand, er der nogle begrænsninger.
-
Nogle DAX-formler kan returnere forskellige resultater, hvis du installerer modellen i DirectQuery-tilstand.
-
Nogle formler kan medføre valideringsfejl, når du installerer modellen i DirectQuery-tilstand, fordi formlen indeholder en DAX-funktion, der ikke understøttes i forhold til en relationel datakilde.
Du kan få mere at vide under Dokumentation til tabelmodellering i Analysis Services i SQL Server 2012 BooksOnline.