Förståelse för rad- och filterkontext
Svep för att visa menyn
Varje DAX-beräkning körs inom en kontext — en definition av vilka rader som är relevanta vid utvärderingstillfället. Utan förståelse för kontext är det omöjligt att förutsäga vad ett mått kommer att returnera eller att felsöka varför det returnerar fel värde.
Radkontext
Radkontext är den kontext som finns i en beräknad kolumn. När Power Pivot utvärderar en beräknad kolumn behandlar den varje rad individuellt — DAX vet exakt vilken rad den befinner sig på och använder endast värdena från den raden i beräkningen.
Vad är det? Medvetenheten om den aktuella raden. Formeln kan referera till vilken kolumn som helst i samma tabell och hämta värdet för just den raden — inte en summa eller ett medelvärde, utan det exakta cellvärdet.
Radkontext finns inte för mått. När ett mått utvärderas finns det ingen aktuell rad — endast en uppsättning aktiva filter. Därför ger det ett fel att skriva en radnivåetikett som ett mått: måttet har ingen rad att utvärdera mot.
Filterkontext
Filterkontext är den kontext som finns när ett mått utvärderas. Det är den kompletta uppsättningen av aktiva filter i datamodellen vid det tillfälle måttet beräknas — bestämt av allt som pivottabellen för närvarande vet om just den cellen.
Varje cell i en pivottabell har sin egen unika kombination av aktiva filter.
En tom cell indikerar inte ett fel — det betyder att filterkontexten för den cellen returnerar noll matchande rader. Under den aktuella kombinationen av aktiva filter finns det helt enkelt inga data.
De fyra källorna till filterkontext
Filterkontext ackumuleras samtidigt från fyra oberoende källor. Var och en begränsar datamängden ytterligare:
- Radrubriker: varje värde i radernas område tillämpar ett filter på sin rad. Region = North och Region = South skapar olika filterkontexter — varje cell i raden North ser endast försäljning från North;
- Kolumnrubriker: varje värde i kolumnområdet lägger till en andra filterdimension. I kombination med radrubriker befinner sig nu varje cell i skärningspunkten mellan två oberoende filter;
- Utskärningar (slicers): ett urval i en utskärning tillämpar sitt filter på varje cell i pivottabellen samtidigt. Om januari väljs i en månadsutskärning begränsas alla celler till data för januari oavsett deras rad- eller kolumnposition;
- Pivottabellfilter: filter som tillämpas direkt i pivottabellens filterområde bidrar också till filterkontexten för varje cell och staplas ovanpå redan aktiva rad-, kolumn- och utskärningsfilter.
Uppgift
Steg 1 — Experiment med radkontext
-
Öppna arbetsboken. Gå till Power Pivot → Hantera → Datavy → fliken Sales.
-
Titta på den beräknade kolumnen Order Size. Den innehåller antingen Large eller Small för varje rad, baserat på värdet Quantity i den raden.
-
Lägg nu till en andra beräknad kolumn i tabellen Sales med följande formel:
= Sales[Quantity] * Sales[UnitPrice]
-
Döp om den till
Row Revenue. -
Bläddra igenom kolumnen och bekräfta att varje rad visar ett unikt värde, nämligen produkten av just den radens Quantity och UnitPrice.
Steg 2 — Svara sedan på följande frågor
- Vilken typ av kontext används när DAX utvärderar Row Revenue för varje rad?
- Är Row Revenue samma som kolumnen Total som redan finns i tabellen Sales?
- Skulle det vara meningsfullt att skapa Row Revenue som ett mått istället för en beräknad kolumn?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal