Forståelse af Række- og Filterkontekst
Stryg for at vise menuen
Enhver DAX-beregning kører inden for en kontekst — en definition af, hvilke rækker der er relevante på evaluerings-tidspunktet. Uden forståelse for kontekst er det umuligt at forudsige, hvad et mål vil returnere, eller at diagnosticere hvorfor det returnerer en forkert værdi.
Rækkekontekst
Rækkekontekst er den kontekst, der findes inde i en beregnet kolonne. Når Power Pivot evaluerer en beregnet kolonne, behandles hver række individuelt — DAX ved præcis, hvilken række den er på, og bruger kun værdierne fra den pågældende række i beregningen.
Hvad er det? Bevidstheden om den aktuelle række. Formlen kan referere til enhver kolonne i samme tabel og modtage værdien for netop den specifikke række — ikke en sum eller gennemsnit, men den præcise celleværdi.
Rækkekontekst eksisterer ikke for mål. Når et mål evalueres, er der ingen aktuel række — kun et sæt aktive filtre. Derfor giver det en fejl at skrive en række-niveau etiket som et mål: målet har ingen række at evaluere imod.
Filterkontekst
Filterkontekst er den kontekst, der findes, når et mål evalueres. Det er det komplette sæt af aktive filtre på datamodellen på det tidspunkt, hvor målet beregnes — bestemt af alt, hvad pivottabellen aktuelt ved om den specifikke celle.
Hver celle i en pivottabel har sin egen unikke kombination af aktive filtre.
En tom celle indikerer ikke en fejl — det betyder, at filterkonteksten for den celle returnerer nul matchende rækker. Under den nuværende kombination af aktive filtre er der simpelthen ingen data.
De fire kilder til filterkontekst
Filterkontekst akkumuleres samtidigt fra fire uafhængige kilder. Hver enkelt indsnævrer datasættet yderligere:
- Rækkelabels: hver værdi i rækkeområdet anvender et filter på sin række. Region = North og Region = South skaber forskellige filterkontekster — hver celle i North-rækken ser kun North-salg;
- Kolonnelabels: hver værdi i kolonneområdet tilføjer en anden filterdimension. Kombineret med rækkelabels befinder hver celle sig nu i krydset mellem to uafhængige filtre;
- Udvælgere (slicers): et valg i en udvælger anvender sit filter på alle celler i pivottabellen samtidigt. Hvis man vælger January i en måned-udvælger, begrænses alle celler til January-data uanset deres række- eller kolonneposition;
- Pivottabelfiltre: filtre, der anvendes direkte i pivottabellens filterområde, bidrager også til filterkonteksten for hver celle og lægges oven på eventuelle allerede aktive række-, kolonne- og udvælgerfiltre.
Opgave
Trin 1 — Rækkekontekst-eksperiment
-
Åbn projektmappen. Gå til Power Pivot → Manage → Data View → Sales fanen.
-
Se på den Order Size beregnede kolonne. Den indeholder enten Large eller Small for hver række, baseret på Quantity-værdien i den række.
-
Tilføj nu en anden beregnet kolonne til Sales-tabellen ved at bruge følgende formel:
= Sales[Quantity] * Sales[UnitPrice]
-
Omdøb den til
Row Revenue. -
Rul gennem kolonnen og bekræft, at hver række viser en forskellig værdi, nemlig produktet af den specifikke rækkes Quantity og UnitPrice.
Trin 2 — Besvar derefter følgende spørgsmål
- Hvilken type kontekst anvendes, når DAX evaluerer Row Revenue for hver række?
- Er Row Revenue det samme som Total-kolonnen, der allerede findes i Sales-tabellen?
- Ville det give mening at oprette Row Revenue som et mål i stedet for en beregnet kolonne?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat