Kontekst i DAX-formler

Viktig: Denne artikkelen er maskinoversatt, se ansvarsfraskrivelsen. Du finner den engelske versjonen av artikkelen her som referanse.

Ved hjelp av kontekst er det mulig å utføre dynamisk analyse, der resultatene av en formel kan endre seg for å reflektere gjeldende rad- eller celleutvalg i tillegg til eventuelle relaterte data. Det er svært viktig å forstå og kunne bruke kontekst på en effektiv måte når du skal bygge formler med høy ytelse, dynamiske analyser og feilsøke problemer i formler.

Denne delen angir de ulike typene kontekst: radkontekst, spørringskontekst og filterkontekst. Den forklarer hvordan kontekst evalueres for formler i beregnede kolonner og i pivottabeller.

Nederst i denne artikkelen finner du koblinger til detaljerte eksempler som illustrerer hvordan formelresultatene endres etter konteksten.

Forstå kontekst

Formler i Power Pivot kan påvirkes av filtre i en pivottabell, relasjoner mellom tabeller og filtre i formler. Kontekst er som gjør det mulig å utføre dynamisk analyser. Forstå kontekst er viktig for bygning og feilsøking av formler.

Det finnes ulike typer kontekst: radkontekst, spørringskontekst og filterkontekst.

Radkontekst kan ses på som "gjeldende rad". Hvis du har opprettet en beregnet kolonne, består radkonteksten av verdiene i hver enkelt rad, og verdiene i kolonner er relatert til gjeldende rad. Det finnes også enkelte funksjoner (EARLIER-funksjonen og EARLIEST-funksjonen) som henter en verdi fra gjeldende rad og deretter bruker denne verdien mens en operasjon over en hel tabell utføres.

Spørringskontekst refererer til delsettet med data som opprettes implisitt for hver celle i en pivottabell, avhengig av rad- og kolonneoverskriftene.

Filterkontekst er settet med verdier som er tillatt i hver kolonne basert på filterbegrensninger, og som ble brukt på raden, eller som er definert av filteruttrykk i selve formelen.

Til toppen av siden

Radkontekst

Hvis du oppretter en formel i en beregnet kolonne, inneholder radkonteksten for formelen verdiene fra alle kolonnene i den gjeldende raden. Hvis tabellen er relatert til en annen tabell, består innholdet i tillegg av alle verdiene fra den andre tabellen som er relatert til den gjeldende raden.

Hvis du for eksempel anta at du oppretter en beregnet kolonne, = [Frakt] + [skatt],

, som legger sammen to kolonner fra den samme tabellen. Denne formelen fungerer som formler i en Excel-tabell, som automatisk refererer til verdier i samme rad. Vær oppmerksom på at tabeller ikke fungerer på samme måte som områder: Du kan ikke referere til en verdi fra raden før gjeldende rad ved hjelp av områdenotasjon, og du kan ikke referere til en tilfeldig enkeltverdi i en tabell eller celle. Du må alltid arbeide med tabeller og kolonner.

Tabellrelasjoner etterfølges automatisk av radkontekst for å fastslå hvilke rader som er tilknyttet gjeldende rad, i relaterte tabeller.

Formelen nedenfor bruker for eksempel RELATED-funksjonen til å hente en avgiftsverdi fra en relatert tabell basert på området ordren ble send til. Avgiftsverdien fastsettes ved å bruke verdien for område i den gjeldende tabellen, slå opp området i den relaterte tabellen og deretter hente avgiftssatsen for området fra den relaterte tabellen.

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

Denne formelen henter ganske enkelt avgiftssatsen for det gjeldende området fra Region-tabellen. Du trenger ikke å kjenne eller angi nøkkelen som kobler sammen tabellene.

Kontekst for flere rader

I tillegg inneholder DAX funksjoner som itererer beregninger i en tabell. Disse funksjonene kan ha flere gjeldende rader og gjeldende radkontekster. Med programmeringsterminologi vil det si at du kan opprette formler som gjentas i en indre eller ytre løkke.

Tenk deg at arbeidsboken inneholder en produkter -tabellen og en Salg -tabellen. Du kanskje vil gå gjennom hele salgstabellen, som er full av transaksjoner som involverer flere produkter, og Finn største antallet bestilt for hvert produkt i en hvilken som helst én transaksjon.

I Excel krever denne beregningen en serie med mellomliggende summeringer, som ville krevd ny bygging hvis dataene ble endret. Hvis du er avansert Excel-bruker, vil du kanskje kunne bygge matriseformler som kunne utført denne oppgaven. Alternativt kan du skrive nestede underordnede SELECT-setninger i en relasjonsdatabase.

I DAX kan du imidlertid bygge én enkelt formel som returnerer riktig verdi, og resultatene oppdateres automatisk hver gang du legger til data i tabellene.

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

For en detaljert gjennomgang av denne formelen kan du se EARLIER-funksjonen.

Kort fortalt lagrer EARLIER-funksjonen radkonteksten fra operasjonen før den gjeldende operasjonen. Denne funksjonen lagrer kontinuerlig to kontekstsett: et kontekstsett som representerer den gjeldende raden for den indre løkken i formelen, og et annet kontekstsett som representerer den gjeldende raden for den ytre løkken i formelen. DAX leverer automatisk verdier mellom de to løkkene, slik at du kan opprette komplekse aggregeringer.

Til toppen av siden

Spørringskontekst

Spørringskontekst refererer til delsettet med data som hentes implisitt for en formel. Når du slipper en mål- eller andre verdifelt i en celle i en pivottabell, undersøker Power Pivot motoren rad- og kolonneoverskrifter, slicere og rapportfiltre for å bestemme konteksten. Power Pivot gjør deretter de nødvendige beregningene til å fylle ut hver celle i pivottabellen. Sett med data som er hentet er spørringskontekst for hver celle.

Siden konteksten endrer seg avhengig av hvor formelen plasseres, endrer resultatene av formelen seg også avhengig av om du bruker formelen i en pivottabell med mange grupperinger og filtre, eller i en beregnet kolonne uten filtre og med minimal kontekst.

Hvis du for eksempel anta at du oppretter denne enkle formelen som summerer verdiene i Profit -kolonnen i Sales -table:=SUM('Sales'[Profit]).

Hvis du bruker denne formelen i en beregnet kolonne i Sales -tabellen, vil resultatet for formelen være det samme for hele tabellen, fordi spørringskontekst for formelen er alltid hele datasettet i Sales -tabellen. Resultatene må fortjeneste for alle områder, alle produkter, alle år, og så videre.

Vanligvis er det ikke ønskelig å se de samme resultatene hundrevis av ganger. I stedet kan du vise fortjenesten for et bestemt år, et bestemt land eller område, et bestemt produkt, eller en kombinasjon av disse, og deretter vise totalsummen.

Det er enkelt å endre kontekst ved å legge til eller fjerne kolonne- og radoverskrifter og ved å legge til eller fjerne slicere i en pivottabell. Du kan opprette en formel som det ovenfor, i et mål, og slipp den i en pivottabell. Når du legger til kolonne- eller radoverskrifter i pivottabellen, kan du endre spørringskontekst som mål evalueres. Oppstykking og filtrering operasjoner også påvirke kontekst. Derfor vurderes samme formelen, som brukes i en pivottabell i en annen spørringskontekst for hver celle.

Til toppen av siden

Filterkontekst

Filterkontekst legges til når du angir filterbegrensninger på settet med verdier som er tillatt i en kolonne eller tabell, ved å bruke argumenter i en formel. Filterkontekst brukes over andre kontekster, for eksempel radkontekst eller spørringskontekst.

Hvis du for eksempel beregner en pivottabell verdier for hver celle som er basert på rad- og kolonneoverskrifter, som beskrevet i forrige del på spørringskontekst. I mål og beregnede kolonner som du har lagt til i pivottabellen, kan du imidlertid angi filteruttrykk for å styre verdiene som brukes i formelen. Du kan også selektivt fjerne filtrene på bestemte kolonner.

Hvis du vil ha mer informasjon om hvordan du oppretter filtre i formler, kan du se Filterfunksjoner (DAX).

For et eksempel på hvordan filtre kan fjernes for å beregne totalsummer, kan du se ALL-funksjonen.

For eksempler på hvordan du selektivt fjerner og bruker filtre i formler, kan du se ALLEXCEPT-funksjonen.

Derfor må du gå gjennom definisjonen av mål og formler som brukes i en pivottabell slik at du er klar over filterkontekst når tolke formelresultatene.

Til toppen av siden

Fastsette kontekst i formler

Når du oppretter en formel, kontrollerer Power Pivot for Excel først generell syntaks. Deretter kontrolleres navnene på kolonnene og tabellene du oppgir, mot mulige kolonner og tabeller i den gjeldende konteksten. Hvis Power Pivot ikke finner kolonnene og tabellene som er angitt av formelen, vises en feilmelding.

Kontekst fastsettes som beskrevet i de foregående delene, ved å bruke de tilgjengelige tabellene i arbeidsboken, eventuelle relasjoner mellom tabellene og eventuelle filtre som er brukt.

Hvis du for eksempel nylig har importert data til en ny tabell og ikke har brukt filtre, er hele settet med kolonner i tabellen en del av den gjeldende konteksten. Hvis du har flere tabeller som er koblet ved hjelp av relasjoner, og du arbeider i en pivottabell som er filtrert ved å legge til kolonneoverskrifter og bruke slicere, vil konteksten inneholde de relaterte tabellene og eventuelle filtre på dataene.

Kontekst er et kraftig konsept som også kan gjøre det vanskelig å feilsøke formler. Vi anbefaler at du starter med enkle formler og relasjoner for å se hvordan kontekst fungerer, og deretter begynner å eksperimentere med enkle formler i pivottabeller. Delen nedenfor inneholder også eksempler på hvordan formler bruker ulike konteksttyper for å returnere resultater dynamisk.

Eksempler på kontekst i formler

  • RELATED-funksjonen utvider konteksten til den gjeldende raden slik at den inkluderer verdier i en relatert kolonne. Dette lar deg utføre oppslag. Eksemplet i dette emnet illustrerer interaksjonen mellom filtrering og radkontekst.

  • FILTER-funksjonen lar deg angi radene som skal inkluderes i den gjeldende konteksten. Eksemplene i dette emnet illustrerer også hvordan filtre bygges inn i andre funksjoner som utfører aggregeringer.

  • ALL-funksjonen angir kontekst i en formel. Du kan bruke den til å overstyre filtre som er brukt som resultat av spørringskontekst.

  • ALLEXCEPT-funksjonen lar deg fjerne alle filtre unntatt ett som du angir. Begge emnene inneholder eksempler som viser hvordan du bygger formler og får innsikt i komplekse kontekster.

  • Funksjonene EARLIER og EARLIEST lar deg utføre beregninger i tabeller i en løkke mens det refereres til en verdi fra en indre løkke. Hvis du er kjent med konseptet gjentakelse og indre og ytre løkker, vil du sette pris på de kraftige funksjonene EARLIER og EARLIEST. Hvis du ikke er kjent med disse konseptene, kan du følge trinnene i eksemplet nøye for å se hvordan indre og ytre kontekster brukes i beregninger.

Til toppen av siden

Referanseintegritet

Denne delen tar for seg noen avanserte begreper relatert til manglende verdier i Power Pivot-tabeller som er koblet sammen via relasjoner. Informasjonen kan være nyttig hvis du har arbeidsbøker med flere tabeller og komplekse formler, og du vil ha hjelp til å forstå resultatene.

Hvis du ikke har kjennskap til relasjonsdatabegreper, anbefaler vi at du først leser innledningsemnet Oversikt over relasjoner.

Referanseintegritet og Power Pivot-relasjoner

Power Pivot krever ikke referanseintegritet mellom to tabeller for å kunne definere en gyldig relasjon. Det blir i stedet opprettet en blank rad på én-siden i hver én-til-mange relasjon, og denne raden brukes til å behandle alle ikke-samsvarende rader fra den relaterte tabellen. Den fungerer i realiteten som en ytre kobling i SQL.

Hvis du i pivottabeller grupperer data etter én-siden i relasjonen, grupperes alle ikke-samsvarende data på mange-siden i relasjonen sammen og inkluderes i totaler med tomme radoverskrifter. Den tomme overskriften tilsvarer omtrent "det ukjente medlemmet".

Forstå det ukjente medlemmet

Du har sannsynligvis kjennskap til begrepet om det ukjente medlemmet hvis du har arbeidet med flerdimensjonale databasesystemer, for eksempel SQL Server Analysis Services. Hvis begrepet er nytt for deg, beskriver eksemplet nedenfor hva det ukjente medlemmet er og hvordan det påvirker beregninger.

Anta at du oppretter en beregning som summerer månedlig salg for hver butikk, men en kolonne i salgstabellen mangler en verdi for store navnet. Ettersom som er koblet tabellene for lagring og Salg av store navnet, hva du forventer å oppstå i formelen? Hvordan skal pivottabellen gruppere eller vise salgstallene som ikke er relatert til en eksisterende store?

Dette er et vanlig problem i datavarehus, der store tabeller med faktadata må være logisk relatert til dimensjonstabeller som inneholder informasjon om butikker, områder og andre attributter som brukes til å kategorisere og beregne fakta. Problemet kan løses ved at eventuelle nye fakta som ikke er relatert til en eksisterende entitet, tilordnes midlertidig til det ukjente medlemmet. Dette er årsaken til at fakta som ikke er relatert til en eksisterende entitet, vises gruppert i en pivottabell under en tom overskrift.

Behandling av tomme verdier kontra tomme rader

Tomme verdier er annerledes enn tomme rader som legges til for å tilpasses det ukjente medlemmet. Den tomme verdien er en spesialverdi som brukes til å representere nuller, tomme strenger og andre manglende verdier. Hvis du vil ha mer informasjon om tomme verdier og andre DAX-datatyper, kan du se Datatyper i datamodeller.

Til toppen av siden

Merknad: Ansvarsfraskrivelse for maskinoversettelse: Denne artikkelen er oversatt av et datasystem i stedet for en oversetter. Microsoft tilbyr disse maskinoversettelsene slik at brukere som ikke snakker engelsk, får tilgang til innhold om Microsoft-produkter, -tjenester og –teknologier. Ettersom artikkelen er maskinoversatt, kan den inneholde feil i vokabular, syntaks eller grammatikk.

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×