Filtrere data i DAX-formler

Gælder for
Excel til Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

I dette afsnit beskrives det, hvordan du opretter filtre i DAX-formler (Data Analysis Expressions). Du kan oprette filtre i formler for at begrænse værdierne fra kildedataene, der bruges i beregninger. Det gør du ved at angive en tabel som input til formlen og derefter definere et filterudtryk. Det filterudtryk, du angiver, bruges til at forespørge på dataene og returnerer kun et undersæt af kildedataene. Filteret anvendes dynamisk, hver gang du opdaterer resultaterne af formlen, afhængigt af den aktuelle kontekst for dine data.

Denne artikel indeholder

Oprettelse af et filter i en tabel, der bruges i en formel

Du kan anvende filtre i formler, der bruger en tabel som input. I stedet for at angive et tabelnavn bruger du funktionen FILTRER til at definere et undersæt af rækker fra den angivne tabel. Dette undersæt overføres derefter til en anden funktion ved handlinger som brugerdefinerede sammenlægninger.

Lad os antage, at du har en tabel med data, der indeholder ordreoplysninger om forhandlere, og du vil beregne, hvor meget hver forhandler har solgt. Men du vil gerne have vist salgsbeløbet udelukkende for de forhandlere, der har solgt flere enheder af dine produkter af højere værdi. Følgende formel, der er baseret på DAX-eksempelprojektmappen, viser et eksempel på, hvordan du kan oprette denne beregning ved hjælp af et filter:

=SUMX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Antal] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Den første del af formlen angiver en af Power Pivot-sammenlægningsfunktionerne, der benytter en tabel som argument. SUMX beregner en sum for en tabel.

  • Den anden del af formlen angiverSUMX, FILTER(table, expression),hvilke data der skal bruges. SUMX Kræver en tabel eller et udtryk, der resulterer i en tabel. I stedet for at bruge alle dataene i en tabel kan du her bruge FILTER funktionen til at angive, hvilke af rækkerne i tabellen der bruges.
    Filterudtrykket består af to dele: Den første del navngiver den tabel, som filteret gælder for. Den anden del definerer et udtryk, der skal bruges som filterbetingelse. I dette tilfælde filtrerer du på forhandlere, der har solgt mere end 5 enheder, og produkter, der koster mere end $100. Operatoren, &&, er en logisk AND-operator, som angiver, at begge dele af betingelsen skal være sande, for at rækken kan tilhøre det filtrerede undersæt.

  • Den tredje del af formlen fortæller funktionen SUMX , hvilke værdier der skal lægges sammen. I dette tilfælde bruger du kun salgsbeløbet.
    Bemærk, at funktioner som f.eks. FILTRER, der returnerer en tabel, aldrig returnerer tabellen eller rækkerne direkte, men er altid integreret i en anden funktion. Du kan finde flere oplysninger om FILTER og andre funktioner, der bruges til filtrering, herunder flere eksempler, under Filterfunktioner (DAX).

    Bemærk

    Filterudtrykket påvirkes af den kontekst, det bruges i. Hvis du f.eks. bruger et filter i en måling, og målingen bruges i en pivottabel eller et pivotdiagram, kan det undersæt af data, der returneres, blive påvirket af yderligere filtre eller udsnit, som brugeren har anvendt i pivottabellen. Du kan finde flere oplysninger om kontekst under Kontekst i DAX-formler.

Filtre, der fjerner dubletter

Ud over at filtrere efter bestemte værdier kan du returnere et entydigt sæt af værdier fra en anden tabel eller kolonne. Dette kan være nyttigt, når du vil tælle antallet af entydige værdier i en kolonne eller bruge en liste over entydige værdier til andre handlinger. DAX indeholder to funktioner til returnering af entydige værdier: Funktionen DISTINCT og funktionen VALUES.

  • Funktionen DISTINCT undersøger en enkelt kolonne, du angiver som et argument til funktionen, og returnerer en ny kolonne, der kun indeholder de entydige værdier.
  • Funktionen VÆRDIER returnerer også en liste over entydige værdier, men returnerer også det ukendte medlem. Dette er nyttigt, når du bruger værdier fra to tabeller, der er forbundet via en relation, og en værdi mangler i den ene tabel og findes i den anden. Du kan finde flere oplysninger om det ukendte medlem under Kontekst i DAX-formler.

Begge disse funktioner returnerer en hel kolonne med værdier. Du kan derfor bruge funktionerne til at få en liste over værdier, som derefter videregives til en anden funktion. Du kan f.eks. bruge følgende formel til at få en liste over de forskellige produkter, der er solgt af en bestemt forhandler, ved hjælp af den entydige produktnøgle, og derefter tælle produkterne på listen ved hjælp af funktionen COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Toppen af siden

Hvordan kontekst påvirker filtre

Når du tilføjer en DAX-formel i en pivottabel eller et pivotdiagram, kan resultatet af formlen blive påvirket af konteksten. Hvis du arbejder i en Power Pivot-tabel, er konteksten den aktuelle række og dens værdier. Hvis du arbejder i en pivottabel eller et pivotdiagram, betyder konteksten sættet eller delsættet af data, der er defineret af handlinger som udsnit eller filtrering. Designet af pivottabellen eller pivotdiagrammet har også sin egen kontekst. Hvis du f.eks. opretter en pivottabel, der grupperer salg efter område og år, vises kun de data, der gælder for disse områder og år, i pivottabellen. Derfor beregnes alle målinger, du føjer til pivottabellen, i konteksten af kolonne- og rækkeoverskrifterne plus eventuelle filtre i måleformlen.

Du kan finde flere oplysninger under Kontekst i DAX-formler.

Toppen af siden

Fjernelse af filtre

Når du arbejder med komplekse formler, vil du måske gerne vide, præcis hvad de aktuelle filtre er, eller måske vil du ændre filterdelen af formlen. DAX indeholder adskillige funktioner, der giver dig mulighed for at fjerne filtre og styre, hvilke kolonner der bevares som en del af den aktuelle filterkontekst. Dette afsnit indeholder en oversigt over, hvordan disse funktioner påvirker resultater i en formel.

Tilsidesættelse af alle filtre med funktionen ALL

Du kan bruge ALL funktionen til at tilsidesætte eventuelle filtre, der tidligere er blevet anvendt, og returnere alle rækker i tabellen til den funktion, der udfører aggregeringshandlingen eller en anden handling. Hvis du bruger en eller flere kolonner i stedet for en tabel som argumenter for ALL, ALL returnerer funktionen alle rækker og ignorerer eventuelle kontekstfiltre.

Bemærk

Hvis du er bekendt med terminologien i relationsdatabaser, kan du tænke på ALL dette som en generering af den naturlige venstre ydre joinforbindelse for alle tabellerne.

Antag f.eks., at du har tabellerne Salg og Produkter, og du vil oprette en formel, der beregner summen af salg for det aktuelle produkt divideret med salget for alle produkter. Du skal tage højde for, at hvis formlen bruges i en måling, bruger brugeren af pivottabellen muligvis et udsnitsværktøj til at filtrere efter et bestemt produkt med produktnavnet på rækkerne. For at få nævnerens sande værdi uanset eventuelle filtre eller udsnit skal du derfor tilføje funktionen ALL for at tilsidesætte eventuelle filtre. Følgende formel er et eksempel på, hvordan du kan bruge ALL til at tilsidesætte effekten af tidligere filtre:

=SUM(Salg[Antal])/SUMX(Salg[Antal].FILTRER(Salg;ALLE(Produkter)))

  • Den første del af formlen, SUM (Salg[Beløb]), beregner tælleren.
  • Summen tager højde for den aktuelle kontekst, hvilket betyder, at hvis du tilføjer formlen i en beregnet kolonne, anvendes rækkekonteksten, og hvis du tilføjer formlen i en pivottabel som en måling, anvendes alle filtre, der anvendes i pivottabellen (filterkonteksten).
  • Den anden del af formlen beregner nævneren. Funktionen ALL tilsidesætter eventuelle filtre, der eventuelt anvendes på Products tabellen.

Du kan få flere oplysninger, herunder detaljerede eksempler, under Funktionen ALL.

tilsidesættelse af bestemte filtre med funktionen ALLEXCEPT

Funktionen ALLEXCEPT tilsidesætter også eksisterende filtre, men du kan angive, at nogle af de eksisterende filtre skal bevares. De kolonner, du navngiver som argumenter for funktionen ALLEXCEPT angiver, hvilke kolonner der fortsat skal filtreres. Hvis du vil tilsidesætte filtre fra de fleste kolonner, men ikke alle, er ALLEUNDTAGEN mere praktisk end ALLE. Funktionen ALLEXCEPT er især nyttig, når du opretter pivottabeller, der kan filtreres efter mange forskellige kolonner, og du vil styre de værdier, der bruges i formlen. Du kan få mere at vide, herunder et detaljeret eksempel på, hvordan du bruger ALLEXCEPT i en pivottabel, under funktionen ALLEXCEPT .

Toppen af siden