Rediger filterkontekst
Du kan bruge DAX-funktionen CALCULATE
til at ændre filterkontekst i dine formler. Syntaksen for funktionen CALCULATE er som følger:
CALCULATE(<expression>, [[<filter1>], <filter2>]…)
Funktionen kræver angivelse af et udtryk, der returnerer en skalaværdi, og lige så mange filtre, du har brug for. Udtrykket kan være en måling (som er et navngivet udtryk) eller et udtryk, der kan evalueres i filterkontekst.
Filtre kan være booleske udtryk eller tabeludtryk. Det er også muligt at overføre filterændringsfunktioner, der giver yderligere kontrol, når du ændrer filterkontekst.
Når du har flere filtre, evalueres de ved hjælp af den AND
logiske operator, hvilket betyder, at alle betingelser skal være TRUE
på samme tid.
Bemærk
CALCULATETABLE
DAX-funktionen udfører præcis den samme funktionalitet som CALCULATE
funktionen, bortset fra at den ændrer den filterkontekst, der anvendes på et udtryk, der returnerer et tabelobjekt. I dette modul bruges funktionen i forklaringerne og eksemplerne CALCULATE
, men vær opmærksom på, at disse scenarier også kan gælde for funktionen CALCULATETABLE
.
Anvend booleske udtryksfiltre
Et boolesk udtryksfilter er et udtryk, der evalueres til TRUE
eller FALSE
. Booleske filtre skal overholde følgende regler:
- De kan kun referere til en enkelt kolonne.
- De kan ikke referere til målinger.
- De kan ikke bruge funktioner, der scanner eller returnerer en tabel, der indeholder sammenlægningsfunktioner som
SUM
.
I dette eksempel skal du oprette en måling. Først skal du downloade og åbne filen Adventure Works DW 2020 M06. pbix. Føj derefter følgende måling til tabellen Sales , der filtrerer målingen Revenue ved hjælp af et boolesk udtryksfilter for røde produkter.
Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")
Føj målingen Revenue Red til det tabelvisual, der findes på side 1 i rapporten.
I det næste eksempel filtrerer følgende måling målingen Revenue efter flere farver. Bemærk brugen af operatoren IN
efterfulgt af en liste over farveværdier.
Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})
Følgende måling filtrerer målingen Revenue efter dyre produkter. Dyre produkter er dem, der har en listepris på mere end USD 1.000.
Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)
Anvend tabeludtryksfiltre
Et tabeludtryksfilter anvender et tabelobjekt som filter. Det kan være en reference til en modeltabel, men det er dog sandsynligvis en DAX-funktion, der returnerer et tabelobjekt.
Normalt skal du bruge FILTER
DAX-funktionen til at anvende komplekse filterbetingelser, herunder dem, der ikke kan defineres af et boolesk filterudtryk. Funktionen FILTER
er klassificeret som en iteratorfunktion, så du kan angive en tabel eller et tabeludtryk og et udtryk, der skal evalueres for hver række i den pågældende tabel.
Funktionen FILTER
returnerer et tabelobjekt med præcis den samme struktur som den, som tabellen sendte ind. Rækkerne er et undersæt af de rækker, der blev overført, hvilket betyder de rækker, hvor udtrykket evalueres som TRUE
.
I følgende eksempel vises et tabelfilterudtryk, der bruger funktionen FILTER
:
Revenue High Margin Products =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[List Price] > 'Product'[Standard Cost] * 2
)
)
I dette eksempel filtrerer funktionen FILTER
alle rækker i tabellen Product, der er i filterkontekst. Hver række for et produkt, hvor listeprisen overskrider standardprisen med det dobbelte, vises som en række i den filtrerede tabel. Målingen Revenue evalueres derfor for alle produkter, der returneres af funktionen FILTER
.
Alle filterudtryk, der overføres til funktionen CALCULATE
, er tabelfilterudtryk. Et boolesk filterudtryk er et stenografitegn, der bruges til at forbedre skrive- og læseoplevelsen. Internt oversætter Microsoft Power BI booleske filterudtryk til tabelfilterudtryk, hvilket er den måde, det oversætter målingsdefinitionen Revenue Red på.
Revenue Red =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[Color] = "Red"
)
)
Funktionsmåde for filter
Der forekommer to mulige standardresultater, når du føjer filterudtryk til CALCULATE
funktionen:
- Hvis kolonnerne (eller tabellerne) ikke er i filterkontekst, føjes der nye filtre til filterkonteksten for at evaluere
CALCULATE
udtrykket. - Hvis kolonnerne (eller tabellerne) allerede er i filterkontekst, overskrives de eksisterende filtre af de nye filtre for at evaluere
CALCULATE
udtrykket.
Følgende eksempler viser, hvordan tilføjelse af filterudtryk til CALCULATE
funktionen fungerer.
Bemærk
Der anvendes ingen filtre i tabelvisual'et i nogen af eksemplerne.
Som i den forrige aktivitet blev målingen Revenue Red føjet til et tabelvisual, der grupperer efter område og viser indtægt.
Da der ikke anvendes et filter på kolonnen Color i tabellen Product , føjer evalueringen af målingen et nyt filter til filterkonteksten. I den første række er værdien på 2.681.324,79 USD for de røde produkter, der blev solgt i det australske område.
Hvis du skifter den første kolonne i tabelvisualiseringen fra Område til Farve , vil det give et andet resultat, fordi kolonnen Color i tabellen Product nu er i filterkontekst.
Formlen for målingen Revenue Red evaluerer målingen Revenue ved at tilføje et filter på kolonnen Color (til rød) i tabellen Product . I dette visual, hvor der grupperes efter farve, overskriver formlen for målingen derfor filterkonteksten med et nyt filter.
Det er muligvis ikke dette resultat, du har brug for. I det næste undermodul introduceres KEEPFILTERS
DAX-funktionen, som er en filterændringsfunktion, som du kan bruge til at bevare filtre i stedet for at overskrive dem.