Denne delen beskriver hvordan du oppretter filtre i DAX-formler (Data Analysis Expressions). Du kan opprette filtre i formler for å begrense verdiene fra kildedataene som brukes i beregninger. Du gjør dette ved å angi en tabell som inndata i formelen, og deretter definere et filteruttrykk. Filteruttrykket du angir, brukes til å spørre etter dataene og returnere bare et delsett av kildedataene. Filteret brukes dynamisk hver gang du oppdaterer resultatene av formelen, avhengig av den gjeldende konteksten til dataene.
I denne artikkelen
Opprette et filter i en tabell som brukes i en formel
Du kan bruke filtre i formler som bruker en tabell som inndata. I stedet for å skrive inn et tabellnavn, bruker du FILTER-funksjonen til å definere et delsett av rader fra den angitte tabellen. Dette delsettet blir deretter sendt til en annen funksjon, for operasjoner som egendefinerte aggregasjoner.
La oss for eksempel si at du har en datatabell som inneholder ordreinformasjon om forhandlere, og at du vil beregne hvor mye hver forhandler solgte. Du vil imidlertid vise salgsbeløpet bare for de forhandlerne som solgte flere enheter av produktene med høyere verdi. Formelen nedenfor, basert på DAX-eksempelarbeidsboken, viser ett eksempel på hvordan du kan opprette denne beregningen ved hjelp av et filter:
=SUMMERX(
FILTRER ('ResellerSales_USD', 'ResellerSales_USD'[Antall] > 5 &&
'ResellerSales_USD'[ProductStandardCost_USD] > 100),
'ResellerSales_USD'[SalesAmt]
)
Den første delen av formelen spesifiserer én av Power Pivot-aggregasjonsfunksjonene, som tar en tabell som argument. SUMX beregner en sum over en tabell.
Den andre delen av formelen
FILTER(table, expression),fortellerSUMXdeg hvilke data som skal brukes.SUMXKrever en tabell eller et uttrykk som resulterer i en tabell. Her brukerFILTERdu her i stedet for å bruke alle dataene i en tabell, funksjonen til å spesifisere hvilke av radene fra tabellen som skal brukes.
Filteruttrykket består av to deler: Den første delen navngir tabellen som filteret gjelder for. Den andre delen definerer et uttrykk som skal brukes som filterbetingelse. I dette tilfellet filtrerer du etter forhandlere som har solgt mer enn 5 enheter, og produkter som koster mer enn 100 kroner. Operatoren && er en logisk AND-operator som indikerer at begge delene av betingelsen må være sanne for at raden skal tilhøre det filtrerte delsettet.Den tredje delen av formelen forteller funksjonen
SUMXhvilke verdier som skal summeres. I dette tilfellet bruker du bare salgsbeløpet.
Vær oppmerksom på at funksjoner som FILTRER, som returnerer en tabell, aldri returnerer tabellen eller radene direkte, men er alltid innebygd i en annen funksjon. Hvis du vil ha mer informasjon om FILTER og andre funksjoner som brukes til filtrering, inkludert flere eksempler, kan du se Filterfunksjoner (DAX).Obs!
Filteruttrykket påvirkes av konteksten det brukes i. Hvis du for eksempel bruker et filter i et mål, og målet brukes i en pivottabell eller et pivotdiagram, kan delsettet av data som returneres, bli påvirket av flere filtre eller slicere som brukeren har brukt i pivottabellen. Hvis du vil ha mer informasjon om kontekst, kan du se Kontekst i DAX-formler.
Filtre som fjerner duplikater
I tillegg til å filtrere etter bestemte verdier, kan du returnere et unikt sett med verdier fra en annen tabell eller kolonne. Dette kan være nyttig når du vil telle antall unike verdier i en kolonne eller bruke en liste over unike verdier for andre operasjoner. DAX har to funksjoner for å returnere bestemte verdier: DISTINCT-funksjonen og VALUES-funksjonen.
- DISTINCT-funksjonen undersøker én enkelt kolonne som du angir som et argument for funksjonen, og returnerer en ny kolonne som bare inneholder de distinkte verdiene.
- VERDIER-funksjonen returnerer også en liste over unike verdier, men returnerer også det ukjente medlemmet. Dette er nyttig når du bruker verdier fra to tabeller som er koblet sammen av en relasjon, og en verdi mangler i én tabell som finnes i den andre. Hvis du vil ha mer informasjon om det ukjente medlemmet, kan du se Kontekst i DAX-formler.
Begge disse funksjonene returnerer en hel kolonne med verdier. Du kan derfor bruke funksjonene til å få en liste over verdier som deretter sendes til en annen funksjon. Du kan for eksempel bruke følgende formel til å få en liste over de distinkte produktene som selges av en bestemt forhandler, ved hjelp av den unike produktnøkkelen, og deretter telle produktene i listen ved hjelp av ANTALLRADER-funksjonen:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Slik påvirker kontekst filtre
Når du legger til en DAX-formel i en pivottabell eller et pivotdiagram, kan resultatene av formelen bli påvirket av konteksten. Hvis du arbeider i en Power Pivot-tabell, er konteksten den gjeldende raden og dens verdier. Hvis du arbeider i en pivottabell eller et pivotdiagram, betyr konteksten settet eller delsettet med data som er definert av operasjoner som oppdeling eller filtrering. Utformingen av pivottabellen eller pivotdiagrammet påtvinger også sin egen kontekst. Hvis du for eksempel oppretter en pivottabell som grupperer salg etter område og år, vises bare dataene som gjelder for disse områdene og årene, i pivottabellen. Derfor beregnes alle mål som du legger til i pivottabellen, i sammenheng med kolonne- og radoverskriftene, pluss eventuelle filtre i målformelen.
Hvis du vil ha mer informasjon, kan du se Kontekst i DAX-formler.
Fjerne filtre
Når du arbeider med komplekse formler, vil du kanskje vite nøyaktig hva de gjeldende filtrene er, eller du vil kanskje endre filterdelen av formelen. DAX inneholder flere funksjoner som lar deg fjerne filtre og kontrollere hvilke kolonner som beholdes som en del av den gjeldende filterkonteksten. I denne delen finner du en oversikt over hvordan disse funksjonene påvirker resultatene i en formel.
Overstyring av alle filtre med ALL-funksjonen
Du kan bruke funksjonen ALL til å overstyre eventuelle filtre som tidligere ble brukt, og returnere alle radene i tabellen til funksjonen som utfører mengdeoperasjonen eller andre operasjoner. Hvis du bruker én eller flere kolonner i stedet for en tabell som argumenter til ALL, ALL returnerer funksjonen alle rader og ignorerer eventuelle kontekstfiltre.
Obs!
Hvis du er kjent med terminologien i relasjonsdatabaser, kan du tenke deg ALL at du genererer den naturlige venstre ytre sammenføyningen av alle tabellene.
La oss for eksempel si at du har tabellene Salg og Produkter, og at du ønsker å lage en formel som beregner summen av salget for gjeldende produkt dividert med salget for alle produkter. Du må ta hensyn til at hvis formelen brukes i et mål, kan det hende at brukeren av pivottabellen bruker en slicer til å filtrere etter et bestemt produkt, med produktnavnet på radene. For å få den sanne verdien av nevneren uavhengig av filtre eller slicere, må du derfor legge til ALLE-funksjonen for å overstyre eventuelle filtre. Formelen nedenfor er ett eksempel på hvordan du bruker ALLE til å overstyre effektene av tidligere filtre:
=SUMMER(Salg[Beløp])/SUMMERX(Salg[Beløp], FILTRER(Salg, ALLE(Produkter)))
- Den første delen av formelen, SUMMER (Salg[Beløp]), beregner telleren.
- Summen tar hensyn til gjeldende kontekst, som betyr at hvis du legger til formelen i en beregnet kolonne, brukes radkonteksten, og hvis du legger til formelen i en pivottabell som et mål, brukes eventuelle filtre som brukes i pivottabellen (filterkonteksten).
- Den andre delen av formelen beregner nevneren. ALLE-funksjonen overstyrer eventuelle filtre som kan brukes på
Productstabellen.
Hvis du vil ha mer informasjon, inkludert detaljerte eksempler, se ALLE-funksjonen.
Overstyre bestemte filtre med ALLEXCEPT-funksjonen
ALLEXCLENT-funksjonen overstyrer også eksisterende filtre, men du kan angi at noen av de eksisterende filtrene skal beholdes. Kolonnene du navngir som argumenter til ALLEXCEPT funksjonen, angir hvilke kolonner som fortsatt skal filtreres. Hvis du vil overstyre filtre fra de fleste kolonnene, men ikke alle, er ALLE-UNNTATT mer praktisk enn ALLE. ALLEXEX-funksjonen er spesielt nyttig når du oppretter pivottabeller som kan filtreres etter mange ulike kolonner, og du vil kontrollere verdiene som brukes i formelen. Hvis du vil ha mer informasjon, inkludert et detaljert eksempel på hvordan du bruker ALLEXCEPT i en pivottabell, kan du se ALLEXCEPT-funksjonen.