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 dataene og kun returnere et undersæt af kildedataene. Filteret anvendes dynamisk, hver gang du opdaterer resultaterne af formlen, afhængigt af den aktuelle kontekst af dine data.
I denne artikel
Oprette et filter på en tabel, der bruges i en formel
Du kan anvende filtre i formler, der tager en tabel som input. I stedet for at angive et tabelnavn kan du bruge 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 for handlinger som f.eks. brugerdefinerede sammenlægninger.
Antag f.eks., at du har en tabel med data, der indeholder ordreoplysninger om forhandlere, og du vil beregne, hvor meget hver forhandler har solgt. Du vil dog kun vise salgsbeløbet for de forhandlere, der har solgt flere enheder af dine produkter med 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(
FILTRER ('ResellerSales_USD', 'ResellerSales_USD'[Antal] > 5 && 'ResellerSales_USD'[ProductStandardCost_USD] > 100) 'ResellerSales_USD'[SalesAmt] )-
Den første del af formlen angiver en af de Power Pivot sammenlægningsfunktioner, som tager en tabel som argument. SUMX beregner en sum over en tabel.
-
Den anden del af formlen, FILTER(table, expression),fortæller SUMX , hvilke data der skal bruges. SUMX kræver en tabel eller et udtryk, der resulterer i en tabel. Her kan du i stedet for at bruge alle dataene i en tabel bruge funktionen FILTER til at angive, hvilke af rækkerne i tabellen der skal bruges.
Filterudtrykket består af to dele: navnene på den første del af tabellen, som filteret gælder for. Den anden del definerer et udtryk, der skal bruges som filterbetingelse. I dette tilfælde filtrerer du efter forhandlere, der har solgt mere end 5 enheder og produkter, der koster mere end $ 100. Operatoren, &&, er en logisk OG-operator, som angiver, at begge dele af betingelsen skal være sande, for at rækken hører til det filtrerede undersæt.
-
Den tredje del af formlen fortæller den SUMX funktion, hvilke værdier der skal lægges sammen. I dette tilfælde bruger du kun salgsbeløbet.
Bemærk, at funktioner som FILTRER, som returnerer en tabel, aldrig returnerer tabellen eller rækkerne direkte, men altid er integreret i en anden funktion. Du kan få mere at vide om FILTRER 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 få mere at vide om kontekst under Kontekst i DAX-formler.
Filtre, der fjerner dubletter
Ud over at filtrere for 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 argument for 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 joinforbundet af en relation, og en værdi mangler i den ene tabel og findes i den anden. Du kan få mere at vide om det ukendte medlem under Kontekst i DAX-formler.
Begge disse funktioner returnerer en hel kolonne med værdier. Derfor kan du bruge funktionerne til at få en liste over værdier, der derefter overføres til en anden funktion. Du kan f.eks. bruge følgende formel til at få en liste over de forskellige produkter, der sælges af en bestemt forhandler, ved hjælp af den entydige produktnøgle og derefter tælle produkterne på listen ved hjælp af funktionen TÆL.OPSÆLV:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Sådan påvirker kontekst filtre
Når du føjer en DAX-formel til en pivottabel eller et pivotdiagram, kan resultaterne 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 det sæt eller delsæt af data, der er defineret af handlinger som f.eks. udskæring eller filtrering. Designet af pivottabellen eller pivotdiagrammet giver 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 få mere at vide under Kontekst i DAX-formler.
Fjerne 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 flere funktioner, der gør det muligt 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 resultaterne i en formel.
Tilsidesættelse af alle filtre med funktionen ALL
Du kan bruge funktionen ALL til at tilsidesætte eventuelle filtre, der tidligere blev anvendt, og returnere alle rækker i tabellen til den funktion, der udfører aggregeringen eller en anden handling. Hvis du bruger en eller flere kolonner i stedet for en tabel som argumenter til ALL, returnerer funktionen ALL alle rækker og ignorerer eventuelle kontekstfiltre.
Bemærk!: Hvis du kender til relationsdatabaseterminologi, kan du betragte ALL som at generere 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 salgssummen for det aktuelle produkt divideret med salget for alle produkter. Du skal tage i betragtning, 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 i rækkerne. Hvis du vil have den sande værdi af nævneren uanset filtre eller udsnit, skal du tilføje funktionen ALLE for at tilsidesætte eventuelle filtre. Følgende formel er et eksempel på, hvordan du kan bruge ALLE til at tilsidesætte effekten af tidligere filtre:
=SUM (Salg[Beløb])/SUMX(Salg[Beløb], 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 et mål, anvendes eventuelle filtre, der anvendes i pivottabellen (filterkonteksten).
-
Den anden del af formlen beregner nævneren. Funktionen ALLE tilsidesætter eventuelle filtre, der kan anvendes på den Products tabel.
Du kan finde 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 til funktionen ALLEXCEPT, angiver, hvilke kolonner der fortsat skal filtreres. Hvis du vil tilsidesætte filtre fra de fleste kolonner, men ikke alle, er ALLEXCEPT mere praktisk end ALL. Funktionen ALLEXCEPT er især nyttig, når du opretter pivottabeller, der kan filtreres på mange forskellige kolonner, og du vil styre de værdier, der bruges i formlen. Du kan finde flere oplysninger, herunder et detaljeret eksempel på, hvordan du bruger ALLEXCEPT i en pivottabel, under Funktionen ALLEXCEPT.