Filtrera data i DAX-formler

Viktigt!: Den här artikeln är maskinöversatt, se ansvarsfriskrivningen. Den engelska versionen av den här artikeln finns här för din referens.

Det här avsnittet beskrivs hur du skapar filter i formler för Data Analysis Expressions (DAX). Du kan skapa filter i formler för att begränsa värdena från källdata som används i beräkningar. Du gör detta genom att ange en tabell som indata till formeln och sedan definiera ett filteruttryck. Filteruttrycket som du anger används för att fråga efter data och returnera en delmängd av källdata. Filtret tillämpas dynamiskt varje gång du uppdaterar resultatet av formeln, beroende på den aktuella kontexten för dina data.

I den här artikeln

Skapa ett filter på en tabell som används i en formel

Filter som tar bort dubbletter

Så här påverkas filter av kontexten

Ta bort filter

Åsidosätta alla filter med funktionen ALL

Åsidosätta särskilda filter med funktionen ALLEXCEPT

Skapa ett filter på en tabell som används i en formel

Du kan använda filter i formler som använder en tabell som indata. I stället för att ange ett tabellnamn använder du funktionen FILTER för att definiera en delmängd rader från den angivna tabellen. Delmängden skickas sedan till en annan funktion för åtgärder som anpassade aggregeringar.

Anta att du har en tabell med data som innehåller orderinformation för återförsäljare och du vill beräkna hur mycket varje återförsäljare har sålt. Du vill dock enbart visa försäljningssumman för de återförsäljare som sålt flera enheter av produkter av högre värde. Följande formel, baserat på DAX-exempelarbetsboken, är ett exempel på hur du kan skapa den här beräkningen genom att använda ett filter:

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

  • Den första delen av formeln anger en aggregeringsfunktioner Power Pivot som tar en tabell som ett argument. SUMX beräknar en summa över en tabell.

  • Den andra delen av formeln FILTER(table, expression),står SUMX vilka data som ska användas. SUMX kräver en tabell eller ett uttryck som resulterar i en tabell. Här, i stället för med alla data i en tabell kan funktionen du FILTER för att ange vilka rader från tabellen används.

    Filteruttrycket har två delar: den första delen kalkylbladsnamn tabellen som filtret gäller. Den andra delen definierar ett uttryck som ska användas som villkor för filtret. I det här fallet filtrerar du på återförsäljare som sålde mer än 5 enheter och produkter som kostar mer än 100 kr. Operatorn, & &, är en logisk och operator som anger att båda delarna av villkor måste uppfyllas för raden ska tillhöra filtrerad delmängd.

  • Den tredje delen av formeln anger vilka värden som ska summeras för funktionen SUMX . I det här fallet använder du enbart försäljningssumman.

    Observera att funktioner som FILTER, som returnerar en tabell, aldrig returnerar tabellen eller raderna, utan de är alltid inbäddade i en annan funktion. Mer information om FILTER och andra funktioner som används för filtrering, bland annat fler exempel, finns i Filterfunktioner (DAX).

    Obs!: Filteruttrycket påverkas av den kontext som det används i. Om du till exempel använder ett filter i ett beräknat fält och det beräknat beräknade fältet används i en pivottabell eller ett pivotdiagram kan delmängden data som returneras ha påverkats av fler filter eller utsnitt som användaren har använt i pivottabellen. Mer information om kontext finns i Kontext i DAX-formler.

Filter som tar bort dubbletter

Förutom att filtrera fram särskilda värden kan du returnera en unik uppsättning värden från en annan tabell eller kolumn. Detta kan vara användbart när du vill räkna antalet unika värden i en kolumn eller använda en lista med unika värden för andra åtgärder. DAX innehåller två funktioner som returnerar distinkta värden: DISTINCT, funktion och VALUES, funktion.

  • Funktionen DISTINCT undersöker en enskild kolumn som du anger som argument till funktionen och returnerar en ny kolumn som innehåller bara de distinkta värdena.

  • Funktionen värden returnerar även en lista med unika värden, men returnerar också okänd medlem. Detta är användbart när du använder värden från två tabeller som har anslutit via en relation och ett värde är saknas i en tabell och presentera i den andra. Mer information om den okända medlemmen finns i kontext i DAX-formler.

Båda funktionerna returnerar en hel kolumn med värden. Därför använder du funktionerna för att hämta en lista med värden som sedan skickas till en annan funktion. Du kan till exempel använda följande formel om du vill få en lista över specifika produkter som säljs av en viss återförsäljare, med hjälp av den unika produktnyckeln, och sedan räkna antalet produkter i listan med hjälp av funktionen COUNTROWS:

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

Överst på sidan

Så här påverkas filter av kontexten

När du lägger till en DAX-formel i en pivottabell eller ett pivotdiagram påverkas resultatet av formeln av kontexten. Om du arbetar i en tabell Power Pivot är kontexten den aktuella raden och dess värden. Om du arbetar i en pivottabell eller ett pivotdiagram: kontexten ange eller delmängd data som definieras av åtgärder som skivning eller filtrering. Design för pivottabell- eller pivotdiagramrapport också inför ett eget kontexten. Till exempel om du skapar en pivottabell som grupperas försäljningen efter region och år visas endast de data som gäller för dessa områden och år i pivottabellen. Därför beräknas alla åtgärder som du har lagt till i pivottabellen i kontexten för kolumn- och radrubriker plus eventuella filter i formeln mått.

Mer information finns i Kontext i DAX-formler.

Överst på sidan

Ta bort filter

När du arbetar med komplexa formler kanske du vill veta exakt vilka filtren är eller ändra filterdelen av formeln. DAX innehåller flera funktioner som gör det möjligt att ta bort filter och bestämma vilka kolumner som ska bevaras som en del av den aktuella filterkontexten. Det här avsnittet innehåller en översikt över hur dessa funktioner påverkar resultat i en formel.

Åsidosätta alla filter med funktionen ALL

Du kan använda funktionen ALL för att åsidosätta alla filter som har använts tidigare och returnera alla rader i tabellen till den funktion som utför mängd eller någon annan åtgärd. Om du använder en eller flera kolumner, i stället för en tabell som argument till ALLreturnerar funktionen ALL alla rader, ignorerar alla kontextfilter.

Obs!: På relationsdatabasspråk skapar funktionen ALL den naturliga vänstra yttre kopplingen för alla tabeller.

Anta att du har tabellerna Försäljning och Produkter och vill skapa en formel som beräknar summan av försäljningen för den aktuella produkten dividerat med försäljningen för alla produkter. Om formeln används i ett beräknat fält måste du vara medveten om att användaren av pivottabellen kanske använder ett utsnitt för att filtrera fram en viss produkt, med produktnamnet i raderna. Om du vill hämta det riktiga värdet på nämnaren, oavsett alla filter och utsnitt, måste du därför lägga till funktionen ALL för att åsidosätta dessa filter. Följande formel visar ett exempel på hur du använder ALL för att åsidosätta effekterna av tidigare filter:

= Summa (försäljning [Amount]) / SUMX (försäljning [Amount] FILTER (försäljning, ALL(Products)))

  • Den första delen av formeln, SUM (Sales[Amount]), beräknar täljaren.

  • Summan påverkas av aktuell kontext, vilket innebär att om du lägger till formeln i en beräknad kolumn så används radkontexten. Lägger du till formeln i en pivottabell som ett beräknat fält tillämpas alla filter som finns i pivottabellen (filterkontext).

  • Den andra delen av formeln beräknar nämnaren. Funktionen ALL åsidosätter eventuella filter som kan användas till tabellen Products .

Mer information och detaljerade exempel finns i Funktionen ALL.

Åsidosätta särskilda filter med funktionen ALLEXCEPT

Funktionen ALLEXCEPT åsidosätter också befintliga filter, men du kan ange att några av de befintliga filtren ska behållas. Kolumnerna som du anger som argument till funktionen ALLEXCEPT anger vilka kolumner som ska fortsätta att filtreras. Om du vill åsidosätta filter för de flesta kolumnerna, men inte alla, är ALLEXCEPT en mer praktisk funktion än ALL. Funktionen ALLEXCEPT är särskilt användbar när du skapar pivottabeller som kan filtreras efter flera olika kolumner och när du vill bestämma vilka värden som ska användas i formeln. Mer information och ett detaljerat exempel på hur du använder ALLEXCEPT i en pivottabell finns i Funktionen ALLEXCEPT.

Överst på sidan

Obs!: Ansvarsfriskrivning för maskinöversättning: Den här artikeln har översatts av ett datorsystem utan mänsklig inblandning. Microsoft erbjuder dessa maskinöversättningar för att hjälpa icke engelskspråkiga användare att ta del av information om Microsofts produkter, tjänster och tekniker. Eftersom artikeln är maskinöversatt kan den innehålla fel i ordval, syntax och grammatik.

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×