Kontext 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.

Med kontext kan du utföra dynamiska analyser, där resultatet av en formel kan ändras så att det avspeglar den rad eller cell som är markerad och tillhörande data. Om du vill kunna skapa avancerade formler, dynamiska analyser och felsöka problem i formler är det viktigt att du förstår kontexten och hur du använder den effektivt.

I det här avsnittet definieras olika typer av kontext: radkontext, frågekontext och filterkontext. Här förklaras hur kontexten utvärderas för formler i beräknade kolumner och pivottabeller.

I den sista delen av den här artikeln finns länkar till detaljerade exempel som visar hur resultatet från formlerna ändras utifrån kontexten.

Förstå kontext

Formler i Power Pivot kan påverkas av de filter som används i en pivottabell, relationer mellan tabeller och filter som används i formler. Kontexten är vad gör det möjligt att genomföra analyser av dynamiska. Förstå kontext är viktigt för building och felsökning av formler.

Det finns olika typer av kontext: radkontext, frågekontext och filterkontext.

Radkontext kan ses som "den aktuella raden". Om du har skapat en beräknad kolumn består radkontexten av värdena på varje enskild rad och värdena i kolumnerna som är relaterade till den aktuella raden. Det finns också några funktioner (funktionen EARLIER och funktionen EARLIEST) som hämtar ett värde från den aktuella raden och sedan använder det värdet när en åtgärd utförs i en hel tabell.

Frågekontext syftar på den delmängd data som skapas implicit för varje cell i en pivottabell, beroende på rad- och kolumnrubrikerna.

Filterkontext är den uppsättning värden som tillåts i respektive kolumn, baserat på de filterbegränsningar som tillämpas på raden eller som definierats med filteruttryck i formeln.

Överst på sidan

Radkontext

Om du skapar en formel i en beräknad kolumn omfattar radkontexten för den formeln värdena från alla kolumner på den aktuella raden. Om tabellen är relaterad till en annan tabell omfattar innehållet även alla värden från den andra tabellen som är relaterade till den aktuella raden.

Anta att du skapar en beräknad kolumn, = [Frakt] + [moms]

, som adderar två kolumner från samma tabell. Den här formeln beter sig som formler i en Excel-tabell, som automatiskt refererar till värden från samma rad. Observera att tabeller är annorlunda mot intervall: du kan inte referera till ett värde från raden före den aktuella raden genom att använda intervallnotation och du kan inte referera till ett godtyckligt enskilt värde i en tabell eller cell. Du måste alltid arbeta med tabeller och kolumner.

Radkontexten följer automatiskt relationerna mellan tabeller för att fastställa vilka rader i relaterade tabeller som är associerade med den aktuella raden.

I följande formel används funktionen RELATED för att hämta ett momsvärde från en relaterad tabell, baserat på vilken region ordern levereras från. Momsvärdet fastställs så här: värdet för region i den aktuella tabellen används, regionen slås upp i den relaterade tabellen och momsvärdet för regionen hämtas sedan från den relaterade tabellen.

= [Frakt] + RELATED('Region'[TaxRate])

Med den här formeln hämtas enbart momsvärdet för den aktuella regionen, från tabellen Region. Du behöver inte känna till eller ange nyckeln som kopplar samman tabellerna.

Kontext för flera rader

DAX omfattar också funktioner som itererar beräkningar i en tabell. Dessa funktioner kan ha kontext som utgörs av flera aktuella rader och aktuell rad. På programmeringsspråk kan du skapa formler som söker rekursivt i en inre och yttre loop.

Anta att arbetsboken innehåller en produkttabell och Sales table. Du kanske vill gå igenom hela försäljningstabellen, som är fyllda med transaktioner som omfattar flera produkter, och hitta största antalet beställda för varje produkt i en enskild transaktion.

I Excel kräver den här beräkningen en rad mellansummeringar, som skulle ha behövt återskapas om data ändras. Om du är Excel-superanvändare kanske du kan skapa matrisformler som klarar av detta. Du skulle också kunna skriva kapslade delmarkeringar i en relationsdatabas.

Med DAX kan du emellertid skapa en enda formel som returnerar rätt värde och resultatet uppdateras automatiskt varje gång data läggs till i tabellen.

=MAXX(filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

En detaljerad genomgång av den här formeln finns i EARLIER, funktion.

Kort sagt lagras radkontexten från operationen som föregick den aktuella operationen med funktionen EARLIER. Vid varje tidpunkt lagras två uppsättningar kontext i minnet: en uppsättning kontext representerar den aktuella raden för den inre loopen i formeln och en annan uppsättning kontext representerar den aktuella raden för den yttre loopen i formeln. Med DAX matas värden automatiskt mellan de två looparna så att du kan skapa komplexa aggregeringar.

Överst på sidan

Frågekontext

Frågekontext syftar på delmängden data som hämtas implicit för en formel. När du släpper en åtgärd eller andra värdefält i en cell i en pivottabell undersöker motorn Power Pivot rad- och kolumnrubrikerna, utsnitt och rapportfilter för att bestämma kontexten. Power Pivot gör sedan nödvändiga beräkningar att fylla i varje cell i pivottabellen. Vilka data som har hämtats är frågekontext för varje cell.

Eftersom kontexten kan ändras beroende på var du placerar formeln kan även resultatet av formeln ändras beroende på om du använder formeln i en pivottabell med många grupperingar och filter eller i en beräknad kolumn utan filter och med minimal kontext.

Anta att du har skapat den här enkla formeln som summerar värdena i kolumnen vinst i table:=SUM('Sales'[Profit]) Försäljning .

Om du använder den här formeln i en beräknad kolumn i tabellen Sales blir resultatet för formeln detsamma för hela tabellen, eftersom frågekontext för formeln alltid hela datamängden i tabellen Sales . Dina resultat har vinst för alla regioner, alla produkter, alla år och så vidare.

Vanligtvis vill du inte se samma resultat hundratals gånger utan i stället visa vinsten för ett visst år, ett visst land eller en viss region, en viss produkt eller en kombination av dessa och sedan få en totalsumma.

Det är enkelt att ändra kontexten genom att lägga till eller ta bort kolumn- och radrubriker och genom att lägga till eller ta bort utsnitt i en pivottabell. Du kan skapa en formel som en ovan, som ett mått och släpp den sedan i en pivottabell. När du lägger till kolumn- eller radrubriker i pivottabellen kan ändra du frågekontext åtgärden utvärderas. Skivning och filtrering åtgärder påverkar även kontexten. Därför utvärderas samma formel används i en pivottabell i en annan fråga kontexten för varje cell.

Överst på sidan

Filterkontext

Filterkontext läggs till när du anger begränsningar för den uppsättning värden som tillåts i en kolumn eller tabell, genom att använda argument till en formel. Filterkontexten används ovanpå annan kontext, till exempel radkontext eller frågekontext.

Till exempel beräknar en pivottabell sina värden för varje cell baserat på rad- och kolumnrubriker som beskrivs i föregående avsnitt på frågekontext. Inom mått eller beräknade kolumner som du har lagt till i pivottabellen, kan du ange filteruttryck för att styra vilka värden som används av formeln. Du kan också selektivt Rensa filter på vissa kolumner.

Mer information om hur du skapar filter i formler finns i Filterfunktioner (DAX).

Ett exempel på hur filter kan raderas för att skapa totalsummor finns i ALL, funktion.

Exempel på hur du selektivt tar bort och tillämpar filter i formler finns i ALLEXCEPT, funktion.

Därför måste du kontrollerar definitionen av åtgärder eller formler som används i en pivottabell så att du är medveten om Filterkontexten när du tolkar resultatet från formler.

Överst på sidan

Ta reda på kontexten i formler

När du skapar en formel kontrollerar Power Pivot för Excel först den allmänna syntaxen, och sedan namnen på kolumner och tabeller som du anger mot möjliga kolumner och tabeller i den aktuella kontexten. Om Power Pivot inte kan hitta de kolumner och tabeller som anges av formeln uppstår ett fel.

Kontexten fastställs, som vi beskrev i de tidigare avsnitten, av de tillgängliga tabellerna i arbetsboken, relationer mellan tabellerna och eventuella filter som används.

Om du till exempel just har importerat data till en ny tabell och inte har använt några filter, ingår hela uppsättningen kolumner i tabellen i aktuell kontext. Om du har flera tabeller som är länkade med relationer och du arbetar i en pivottabell som du har filtrerat genom att lägga till kolumnrubriker och använda utsnitt, omfattar kontexten relaterade tabeller och alla filter för data.

Kontext är ett kraftfullt begrepp som även kan göra det svårt att felsöka formler. Vi rekommenderar att du börjar med enkla formler och relationer och tittar på hur kontext fungerar innan du börjar experimentera med enkla formler i pivottabeller. Avsnittet nedan innehåller också några exempel på hur olika typer av kontext används i formler för att returnera resultat dynamiskt.

Exempel på kontext som används i formler

  • Funktionen RELATED utökar kontexten för aktuell rad till att omfatta värden i en relaterad kolumn. Det gör att du kan utföra uppslag. Exemplet visar hur filtrering och radkontext samverkar.

  • Med funktionen FILTER kan du ange vilka rader som ska omfattas i aktuell kontext. Exemplen i det här avsnittet visar också hur du bäddar in filter i andra funktioner som utför aggregeringar.

  • Funktionen ALL anger kontext i en formel. Du kan åsidosätta filtren som används som resultat från frågekontext.

  • Med funktionen ALLEXCEPT kan du ta bort alla filter utom det som du anger. Båda avsnitten innehåller exempel som beskriver hur du skapar formler och förstår komplex kontext.

  • Med funktionerna EARLIER och EARLIEST kan du göra en loop genom tabeller och utföra beräkningar, och referera till ett värde från en inre loop. Om du vet hur man arbetar med rekursion och inre och yttre loopar, kommer du att uppskatta funktionerna EARLIER och EARLIEST. Om du är ovan vid dessa begrepp följer du stegen i exemplet noggrant för att se hur inre och yttre kontext används vid beräkningar.

Överst på sidan

Referensintegritet

Det här avsnittet innehåller information om några avancerade koncept som rör saknade värden i Power Pivot-tabeller som är sammankopplade av relationer. Det här avsnittet kan vara användbart om du har arbetsböcker med flera tabeller och komplexa formler och behöver hjälp med att förstå resultatet.

Om du inte har erfarenhet av begreppen kring relationsdata rekommenderar vi att du börjar med att läsa introduktionsavsnittet Översikt över relationer.

Referensintegritet och Power Pivot-relationer

I Power Pivot krävs inte strikt referensintegritet mellan två tabeller för att en giltig relation ska kunna definieras. Istället skapas en tom rad i 1-änden i en 1:n-relation och används för att hantera alla rader som inte matchar från den relaterade tabellen. Den fungerar effektivt som en yttre SQL-koppling.

Om du grupperar data på 1-sidan av relationen i en pivottabell grupperas alla omatchade data på n-sidan av relationen, och tas med i summan med en tom radrubrik. Den tomma rubriken motsvarar ungefär den "okända medlemmen".

Förstå den okända medlemmen

Begreppet "okänd medlem" är antagligen bekant om du har arbetat med flerdimensionella databassystem, t.ex. SQL Server Analysis Services. Om begreppet är nytt för dig läser du exemplen nedan som förklarar vad den okända medlemmen är och hur den påverkar beräkningarna.

Anta att du skapar en beräkning som summerar månadsförsäljning för varje butik, men ett värde för store namnet saknas i en kolumn i tabellen Sales . Med hänsyn till att tabeller för att lagra och Försäljning är ansluten genom att lagra namn, vad du förväntade ska ske i formeln? Hur ska pivottabellen gruppera eller visa försäljningssiffrorna som inte hör till en befintlig store?

Det här är ett vanligt problem i datalager, där stora tabeller med data måste vara logiskt relaterade till dimensionstabeller som innehåller information om butiker, regioner och andra attribut som används för att kategorisera och beräkna fakta. För att lösa problemet kopplas tillfälligt nya fakta som inte är relaterade till en befintlig entitet till den okända medlemmen. Det är därför som fakta som inte är relaterade visas grupperat i en pivottabell under en tom rubrik.

Behandling av tomma värden jämfört med den tomma raden

Tomma värden skiljer sig från de tomma rader som läggs till för den okända medlemmen. Det tomma värdet är ett särskilt värde som används för att representera nullvärden, tomma strängar och andra saknade värden. Mer information om tomma värden och om andra DAX-datatyper finns i Datatyper i datamodeller.

Ö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.

×