Filtrera data i DAX-formler

Gäller för
Excel för Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

I det här avsnittet beskriver vi hur du skapar filter i DAX-formler (Data Analysis Expressions). Du kan skapa filter i formler för att begränsa värdena från de källdata som används i beräkningar. Det gör du genom att ange en tabell som indata till formeln och sedan definiera ett filteruttryck. Filteruttrycket du anger används för att skicka frågor mot data och returnerar endast en delmängd av källdata. Filtret används dynamiskt varje gång du uppdaterar resultatet av formeln, beroende på det aktuella sammanhanget för dina data.

Artikelinnehåll

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

Du kan använda filter i formler som använder en tabell som indata. Istä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. Den delmängden skickas sedan till en annan funktion för åtgärder som anpassade aggregeringar.

Anta till exempel att du har en tabell med data som innehåller orderinformation om återförsäljare och du vill beräkna hur mycket varje återförsäljare har sålt. Men du vill visa försäljningsbeloppet bara för de återförsäljare som har sålt flera enheter av dina produkter med högre värde. Följande formel, baserad på DAX-exempelarbetsboken, visar ett exempel på hur du kan skapa den här beräkningen med hjälp av ett filter:

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

  • Den första delen av formeln specificerar en av Power Pivot-aggregeringsfunktionerna, som använder en tabell som argument. SUMX beräknar en summa över en tabell.

  • Den andra delen av formeln FILTER(table, expression),anger SUMX vilka data som ska användas. SUMX Kräver en tabell eller ett uttryck som resulterar i en tabell. I stället för att använda alla data i en tabell använder FILTER du funktionen för att ange vilka av tabellens rader som ska användas.
    Filteruttrycket består av två delar: Den första namnger tabellen som filtret gäller för. Den andra delen definierar ett uttryck som ska användas som filtervillkor. I det här fallet filtrerar du på återförsäljare som har sålt fler än 5 enheter och produkter som kostar mer än 1 000 USD. Operatorn, &&, är en logisk OCH-operator som anger att båda delarna av villkoret måste vara sanna för att raden ska tillhöra den filtrerade delmängden.

  • Den tredje delen av formeln anger SUMX för funktionen vilka värden som ska summeras. I det här fallet använder du bara försäljningsbeloppet.
    Observera att funktioner som FILTER, som returnerar en tabell, aldrig returnerar tabellen eller raderna direkt, utan alltid är inbäddade i en annan funktion. Mer information om FILTER och andra funktioner som används för filtrering, inklusive fler exempel, finns i Filterfunktioner (DAX).

    Obs

    Filteruttrycket påverkas av i vilket sammanhang det används. Om du till exempel använder ett filter i ett mått, och måttet används i en pivottabell eller ett pivotdiagram, kan den delmängd av data som returneras påverkas av ytterligare 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 efter specifika värden kan du returnera en unik uppsättning värden från en annan tabell eller kolumn. Det 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. I DAX finns två funktioner för att returnera distinkta värden: funktionen DISTINCT och funktionen VALUES.

  • Funktionen DISTINCT undersöker en enskild kolumn som du anger som ett argument till funktionen och returnerar en ny kolumn som bara innehåller de distinkta värdena.
  • Funktionen VALUES returnerar även en lista med unika värden, men returnerar även den okända medlemmen. Detta är användbart när du använder värden från två tabeller som är kopplade med en relation och ett värde saknas i en tabell och finns i den andra. Mer information om den okända medlemmen finns i Kontext i DAX-formler.

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

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

Överst på sidan

Hur kontexten påverkar filter

När du lägger till en DAX-formel i en pivottabell eller ett pivotdiagram kan formelns resultat påverkas av sammanhanget. Om du arbetar i en Power Pivot-tabell är kontexten den aktuella raden och dess värden. Om du arbetar i en pivottabell eller ett pivotdiagram avses med kontext den uppsättning eller delmängd av data som definieras av åtgärder som celldelning eller filtrering. Pivottabellens eller pivotdiagrammets design har också sitt eget sammanhang. Om du till exempel skapar en pivottabell som grupperar försäljning efter region och år visas bara de data som gäller för dessa regioner och år i pivottabellen. Därför beräknas alla mått som du lägger till i pivottabellen i kontexten för kolumn- och radrubrikerna plus eventuella filter i måttformeln.

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 de aktuella filtren är, eller så kanske du vill ändra filterdelen av formeln. DAX innehåller flera funktioner som gör att du kan ta bort filter och styra vilka kolumner som behålls som en del av den aktuella filterkontexten. Det här avsnittet ger en översikt över hur de här funktionerna påverkar resultatet i en formel.

Åsidosätta alla filter med funktionen ALLA

Du kan använda ALL funktionen för att åsidosätta eventuella filter som tidigare tillämpats och returnera alla rader i tabellen till funktionen som utför aggregeringsåtgärden eller någon annan åtgärd. Om du använder en eller flera kolumner som argument i stället för en ALLALL tabell returnerar funktionen alla rader och ignorerar eventuella kontextfilter.

Obs

Om du är bekant med terminologin för relationsdatabaser kan det fungera som ALL att den naturliga vänstra yttre kopplingen genereras för alla tabeller.

Anta till exempel att du har tabellerna Försäljning och Produkter och du 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 mått måste du ta hänsyn till att pivottabellanvändaren kanske använder ett utsnitt för att filtrera efter en viss produkt med produktnamnet på raderna. För att få fram det sanna värdet för nämnaren oavsett eventuella filter eller utsnitt måste du därför lägga till funktionen ALLA för att åsidosätta eventuella filter. Följande formel är ett exempel på hur du använder ALL för att åsidosätta effekterna av tidigare filter:

=SUMMA (Försäljning[Belopp])/SUMMAX(Försäljning[Belopp], FILTER(Försäljning; ALLA(Produkter)))

  • Den första delen av formeln, SUMMA (Sales[Amount]), beräknar täljaren.
  • Summan tar hänsyn till den aktuella kontexten, vilket innebär att om du lägger till formeln i en beräknad kolumn så tillämpas radkontexten och om du lägger till formeln i en pivottabell som ett mått tillämpas alla filter som används i pivottabellen (filterkontexten).
  • I den andra delen av formeln beräknas nämnaren. Funktionen ALL åsidosätter eventuella filter som kan användas i tabellen Products .

Mer information, inklusive detaljerade exempel, finns i Funktionen ALL.

Åsidosätta specifika filter med ALLEXCEPT-funktionen

Funktionen ALLEXCEPT åsidosätter även befintliga filter, men du kan ange att vissa av de befintliga filtren ska behållas. De kolumner som du namnger som argument för funktionen ALLEXCEPT anger vilka kolumner som ska fortsätta att filtreras. Om du vill åsidosätta filter från de flesta kolumner, men inte alla, är ALLEXCEPT mer praktiskt än ALL. Funktionen ALLEXCEPT är särskilt användbar när du skapar pivottabeller som kan filtreras på många olika kolumner och du vill styra värdena som används i formeln. Mer information, inklusive ett detaljerat exempel på hur du använder ALLEXCEPT i en pivottabell, finns i Funktionen ALLEXCEPT

Överst på sidan