Kontekst i DAX-formler

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

Kontekst gør det muligt for dig at udføre dynamisk analyse, hvor resultatet af en formel kan ændres for at afspejle det aktuelle valg af rækker eller celler samt eventuelle relaterede data. Det er meget vigtigt at forstå konteksten og bruge den på en effektiv måde, når der skal oprettes højtydende formler, dynamiske analyser og ved fejlfinding af problemer i formler.

I dette afsnit defineres de forskellige typer af kontekst: rækkekontekst, forespørgselskontekst og filterkontekst. Dette forklarer, hvordan kontekst evalueres for formler i beregnede kolonner og i pivottabeller.

I den sidste del af denne artikel er der links til detaljerede eksempler, der viser, hvordan resultatet af formlerne ændres alt efter konteksten.

Om kontekst

Formler i Power Pivot kan påvirkes af de filtre, der er anvendt i en pivottabel, relationer mellem tabeller og filtre, der bruges i formler. Kontekst, der gør det muligt at udføre dynamisk analyse. Om kontekst er vigtigt for bygning og udføre fejlfinding i formler.

Der findes forskellige typer kontekst: rækkekontekst, forespørgselskontekst og filterkontekst.

Rækkekontekst kan betragtes som "den aktuelle række”. Hvis du har oprettet en beregnet kolonne, består rækkekonteksten af værdierne i de enkelte rækker og værdierne i kolonner, der er relateret til den aktuelle række. Der er også nogle funktioner (Funktionen EARLIER og Funktionen EARLIEST), der henter en værdi fra den aktuelle række og derefter bruger denne værdi, samtidig med at de udfører en handling over en hel tabel.

Forespørgselskontekst refererer til den delmængde af data, der implicit oprettes for hver celle i en pivottabel, afhængigt af række- og kolonneoverskrifterne.

Filterkontekst er det sæt værdier, der er tilladt i hver kolonne, på baggrund af filterbegrænsninger, som blev anvendt på rækken, eller som er defineret af filterudtryk i formlen.

Toppen af siden

Rækkekontekst

Hvis du opretter en formel i en beregnet kolonne, inkluderer rækkekonteksten for formlen værdierne fra alle kolonner i den aktuelle række. Hvis tabellen er relateret til en anden tabel, inkluderer indholdet også alle de værdier i den anden tabel, der er relateret til den aktuelle række.

Antag f.eks., du opretter en beregnet kolonne, = [fragt] + [skat],

som lægger to kolonner sammen fra den samme tabel. Denne formel fungerer ligesom formler i en Excel-tabel, som automatisk refererer til værdier fra den samme række. Bemærk, at tabeller adskiller sig fra intervaller: Du kan ikke referere til en værdi fra rækken før den aktuelle række ved hjælp af intervalnotation, og du kan ikke referere til en vilkårlig enkeltværdi i en tabel eller celle. Du skal altid arbejde med tabeller og kolonner.

Rækkekontekst følger automatisk relationerne mellem tabellerne for at bestemme, hvilke rækker i de relaterede tabeller der er knyttet til den aktuelle række.

Følgende formel bruger f.eks. funktionen RELATED til at hente en skatteværdi fra en relateret tabel, baseret på det område, som ordren er sendt til. Skatteværdien bestemmes ved at tage værdien for regionen i den aktuelle tabel, slå regionen op i den relaterede tabel og derefter hente skatteprocenten for den pågældende region fra den relaterede tabel.

= [Fragt] + RELATED('Region'[TaxRate])

Denne formel henter skatteprocenten for den aktuelle region fra tabellen Region. Du behøver ikke at kende eller angive den nøgle, der forbinder tabellerne.

Flere rækkekontekster

DAX indeholder desuden funktioner, der gentager beregninger over en tabel. Disse funktioner kan have flere aktuelle rækker og aktuelle rækkekontekster. Udtrykt i programmeringsbegreber kan du oprette formler, der udføres rekursivt over en indvendig og udvendig løkke.

Lad os antage, at projektmappen indeholder en tabel og en tabel for Salg . Du muligvis vil gennemgå hele salg tabellen, som er fyldt med transaktioner med flere produkter, og finde det største antal bestilte for hvert produkt i hvilken som helst transaktion.

I Excel kræver denne beregning en række mellemudregninger, der skal genopbygges, hvis dataene ændres. Hvis du er en erfaren Excel-bruger, kan du muligvis oprette matrixformler, der kan gøre dette. I en relationsdatabase kan du også skrive indlejrede subselect-sætninger.

Men med DAX kan du oprette en enkelt formel, der returnerer den korrekte værdi. Resultaterne bliver så opdateret, hver gang du tilføjer data i tabellerne.

=MAXX(filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Du kan se en detaljeret gennemgang af formlen under Funktionen EARLIER.

Kort fortalt gemmer funktionen EARLIER rækkekonteksten fra den handling, der blev udført før den aktuelle handling. Funktionen gemmer til enhver tid to kontekstsæt i hukommelsen: Det ene kontekstsæt repræsenterer den aktuelle række for den indre løkke i formlen, og det andet kontekstsæt repræsenterer den aktuelle række for den ydre løkke i formlen. DAX overfører automatisk værdier mellem de to løkker, så du kan oprette komplekse sammenlægninger.

Toppen af siden

Forespørgselskontekst

Forespørgselskontekst refererer til undersættet af data, der hentes implicit for en formel. Når du slipper en måling eller andre værdifelt i en celle i en pivottabel, undersøger Power Pivot program række- og kolonneoverskrifter, udsnitsværktøjer og filtre for at bestemme konteksten. Power Pivot gør derefter de nødvendige beregninger til at udfylde hver celle i pivottabellen. Sæt af data, der er hentet er forespørgselskontekst for hver celle.

Da konteksten kan ændres, afhængigt af hvor du placerer formlen, kan formlens resultater også ændres, afhængigt af om du bruger formlen i en pivottabel med mange grupperinger og filtre eller i en beregnet kolonne uden filtre og med meget lidt kontekst.

Lad os antage, at du opretter denne enkle formel, der beregner summerer af værdierne i kolonnen Profit i Salg table:=SUM('Sales'[Profit]).

Hvis du bruger denne formel i en beregnet kolonne i tabellen Sales , resultaterne af formlen ikke det samme for hele tabellen, fordi forespørgselskontekst for formlen er altid hele datasættet i tabellen Sales . Resultaterne har avance for alle områder, alle produkter, alle år, og så videre.

Men normalt er du ikke interesseret i at se det samme resultat flere hundrede gange. Du vil i stedet være interesseret i at få vist fortjenesten for et bestemt år, et bestemt land eller område, et bestemt produkt eller en kombination af disse, og derefter få en hovedtotal.

I en pivottabel er det nemt at ændre kontekst, ved at tilføje eller fjerne kolonne- og rækkeoverskrifter og ved at tilføje eller fjerne udsnit. Du kan oprette en formel som den ovenstående i en måling og derefter slippe den i en pivottabel. Når du har tilføjet række- eller kolonneoverskrifter i pivottabellen, kan du ændre den forespørgselskontekst, hvor målingen evalueres. Oprettelse af udsnit og filtrering handlinger også have betydning kontekst. Derfor evalueres den samme formel, der bruges i en pivottabel i en anden forespørgselskontekst for hver celle.

Toppen af siden

Filterkontekst

Filterkontekst tilføjes, når du angiver filterbegrænsninger på det sæt værdier, der er tilladt i en kolonne eller tabel, ved at bruge argumenter i en formel. Filterkontekst anvendes oven på andre kontekster såsom rækkekontekst eller forespørgselskontekst.

For eksempel beregner en pivottabel dens værdier for hver celle, der er baseret på række- og kolonneoverskrifter, som beskrevet i forrige afsnit på forespørgselskontekst. I målinger eller beregnede kolonner, du føjer til pivottabellen, kan du angive filterudtryk for at styre de værdier, der bruges af formlen. Du kan også selektivt rydde filtre på bestemte kolonner.

Du kan finde flere oplysninger om, hvordan du opretter filtre i formler, under Filterfunktioner (DAX).

Du kan finde et eksempel på, hvordan filtre kan slettes for at oprette hovedtotaler, under Funktionen ALL.

Du kan få vist eksempler på, hvordan du selektivt kan fjerne og anvende filtre i formler, under Funktionen ALLEXCEPT.

Du skal derfor kontrollere definitionen af målinger eller formler, der bruges i en pivottabel, så du er klar over filterkonteksten, når du fortolker resultaterne af formler.

Toppen af siden

Bestemme kontekst i formler

Når du opretter en formel, kontrollerer Power Pivot til Excel først den generelle syntaks og derefter navnene på de kolonner og tabeller, du angiver, i forhold til mulige kolonner og tabeller i den aktuelle kontekst. Hvis Power Pivot ikke kan finde de kolonner og tabeller, der angives i formlen, vises der en fejlmeddelelse.

Konteksten bestemmes som beskrevet i de forudgående afsnit ved hjælp af de tilgængelige tabeller i projektmappen, eventuelle relationer mellem tabellerne og eventuelle filtre, der er anvendt.

Hvis du f.eks. netop har importeret nogle data til en ny tabel og ikke har anvendt filtre, vil hele kolonnesættet i tabellen være en del af den aktuelle kontekst. Hvis du har flere tabeller, der er sammenkædet ved hjælp af relationer, og du arbejder i en pivottabel, der filtreres ved at tilføje kolonneoverskrifter og bruge slicere, omfatter konteksten de relaterede tabeller og eventuelle datafiltre.

Kontekst er et avanceret begreb, der også kan gøre det svært at udføre fejlfinding i formler. Vi anbefaler, at du begynder med enkle formler og relationer for at se, hvordan kontekst fungerer, og derefter eksperimenterer med enkle formler i pivottabeller. Det følgende afsnit indeholder nogle eksempler på, hvordan formler benytter forskellige typer af kontekst til at returnere resultater dynamisk.

Eksempler på kontekst i formler

  • Funktionen RELATED udvider den aktuelle rækkes kontekst for at medtage værdier i en relateret kolonne. Dette gør det muligt at foretage opslag. Eksemplet i dette emne viser interaktionen mellem filtrering og rækkekontekst.

  • Funktionen FILTER gør det muligt at angive de rækker, der skal medtages i den aktuelle kontekst. Eksemplerne i dette emne viser, hvordan du integrerer filtre i andre funktioner, der udfører sammenlægninger.

  • Funktionen ALL angiver konteksten i en formel. Du kan bruge den til at tilsidesætte filtre, der er anvendt som resultat af forespørgselskonteksten.

  • Funktionen ALLEXCEPT gør det muligt at fjerne alle filtre undtagen dem, du angiver. Begge emne omfatter eksempler, der viser, hvordan du opretter formler og får en forståelse af komplekse kontekster.

  • Funktionerne EARLIER og EARLIEST gør det muligt at bruge løkker gennem tabeller ved at foretage beregninger, samtidig med at der refereres til en værdi fra en indvendig løkke. Hvis du kender til rekursion og indvendige og udvendige løkker, vil du sætte pris på de muligheder, som funktionerne EARLIER og EARLIEST giver. Hvis du ikke kender disse begreber, bør du omhyggeligt følge fremgangsmåderne i eksemplet for at se, hvordan de indvendige og udvendige kontekster bruges, når der foretages beregninger.

Toppen af siden

Referentiel integritet

I dette afsnit gennemgås nogle avancerede begreber i forbindelse med manglende værdier i Power Pivot-tabeller, der er forbundet ved hjælp af relationer. Dette afsnit kan være nyttigt, hvis du har projektmapper med flere tabeller og komplekse formler og ønsker hjælp til at forstå resultaterne.

Hvis du ikke kender de begreber, der bruges om relationsdatabaser, anbefaler vi, at du først læser introduktionsemnet Oversigt over relationer.

Referentiel integritet og Power Pivot-relationer

Power Pivot kræver ikke, at referentiel integritet gennemtvinges mellem to tabeller for at definere en gyldig relation. I stedet oprettes en tom række i den "ene" ende af hver en-til-mange-relation, og den bruges til at håndtere alle ikke-matchende rækker fra den relaterede tabel. I realiteten er funktionsmåden som en ydre join i SQL.

Hvis du grupperer data efter den ene side af relationen i pivottabeller, bliver ikke-matchede data på mange-siden af relationen grupperet sammen og bliver medtaget i totaler med en tom rækkeoverskrift. Den tomme overskrift svarer i grove træk til det "ukendte medlem".

Om det ukendte medlem

Du kender sandsynligvis begrebet ukendt medlem, hvis du har arbejdet med flerdimensionelle databasesystemer, f.eks. SQL Server Analysis Services. Hvis begrebet er nyt for dig, kan følgende eksempler forklare, hvad det ukendte medlem er, og hvordan det påvirker beregninger.

Antag, at du opretter en beregning, der opsummerer månedlige salg for hver butik, men en kolonne i tabellen Sales mangler en værdi for store navnet. Hvad vil du forventer at ske i formlen, da der tabellerne for at gemme og Salg er forbundet via store navnet? Hvordan skal pivottabellen gruppere eller få vist de salgstal, der ikke er relateret til en eksisterende store?

Dette problem er almindeligt i datalagre, hvor store tabeller med faktadata logisk skal relateres til dimensionstabeller, der indeholder oplysninger om butikker, områder og andre attributter, som bruges til at kategorisere og beregne fakta. Problemet løses ved, at nye fakta, der ikke er relateret til en eksisterende enhed, midlertidigt tildeles til det ukendte medlem. Det er derfor, at fakta uden relationer vises grupperet i en pivottabel under en tom overskrift.

Behandling af tomme værdier i forhold til den tomme række

Tomme værdier er forskellige fra de tomme rækker, der tilføjes for at gøre plads til det ukendte medlem. Den tomme værdi er en særlig værdi, som bruges til at repræsenterer null-værdier, tomme strenge og andre manglende værdier. Du kan finde flere oplysninger om den tomme værdi samt om andre DAX-datatyper under Datatyper i datamodeller.

Toppen af siden

Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Del Facebook Facebook Twitter Twitter Mail Mail

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×