Endre filterkontekst

Fullført

Du kan bruke DAX-funksjonen CALCULATE til å endre filterkontekst i formlene. Syntaksen for CALCULATE-funksjonen er som følger:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

Funksjonen krever at du sender inn et uttrykk som returnerer en skalarverdi og så mange filtre som du trenger. Uttrykket kan være et mål (som er et navngitt uttrykk) eller et hvilket som helst uttrykk som kan evalueres i filterkontekst.

Filtre kan være boolsk uttrykk eller tabelluttrykk. Det er også mulig å sende inn filterendringsfunksjoner som gir ekstra kontroll når du endrer filterkontekst.

Når du har flere filtre, evalueres de ved hjelp av den logiske operatoren AND , noe som betyr at alle betingelser må være TRUE samtidig.

Obs!

CALCULATETABLE DAX-funksjonen utfører nøyaktig samme funksjonalitet som CALCULATE funksjonen, bortsett fra at den endrer filterkonteksten som brukes på et uttrykk som returnerer et tabellobjekt. I denne modulen bruker CALCULATE forklaringene og eksemplene funksjonen, men husk at disse scenariene også kan gjelde for CALCULATETABLE funksjonen.

Bruk boolsk uttrykk-filtre

Et boolsk uttrykksfilter er et uttrykk som evalueres til TRUE eller FALSE. Boolsk filtre må følge disse reglene:

  • De kan bare referere til én kolonne.
  • De kan ikke referere til et mål.
  • De kan ikke bruke funksjoner som skanner eller returnerer en tabell som inneholder aggregasjonsfunksjoner som SUM.

I dette eksemplet skal du opprette et mål. Start med å laste ned og åpne filen Adventure Works DW 2020 M06.pbix. Deretter legger du til følgende mål i Salg-tabellen som filtrerer Omsetning-målet ved hjelp av et boolsk uttrykksfilter for røde produkter.

Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")

Legg til målet Omsetning (rødt) i tabellvisualobjektet som du finner på Side 1 i rapporten.

I det neste eksemplet filtrerer følgende mål Omsetning-målet etter en rekke farger. Legg merke til bruken av operatoren IN etterfulgt av en liste over fargeverdier.

Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})

Følgende mål filtrerer Omsetning-målet etter dyre produkter. Dyre produkter er de med en listepris som er høyere enn 1000 USD.

Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)

Bruk tabelluttrykkfiltre

Et tabelluttrykkfilter bruker et tabellobjekt som et filter. Det kan være en referanse til en modelltabell, men det er stor sannsynlighet for at det er en DAX-funksjon som returnerer et tabellobjekt.

Vanligvis bruker FILTER du DAX-funksjonen til å bruke komplekse filterbetingelser, inkludert de som ikke kan defineres av et boolsk filteruttrykk. Funksjonen FILTER er klassifisert som en gjentakelsesfunksjon, og du sender derfor inn en tabell eller et tabelluttrykk og et uttrykk som skal evalueres for hver rad i tabellen.

Funksjonen FILTER returnerer et tabellobjekt med nøyaktig samme struktur som det tabellen sendte inn. Radene er et delsett av de radene som ble sendt inn, noe som betyr radene der uttrykket ble evaluert som TRUE.

Følgende eksempel viser et tabellfilteruttrykk som bruker FILTER funksjonen:

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

I dette eksemplet FILTER filtrerer funksjonen alle radene i Produkt-tabellen som er i filterkontekst. Hver rad for et produkt der listeprisen overskrider det dobbelte av standard kostnad, vises som en rad i den filtrerte tabellen. Derfor evalueres Omsetning-målet for alle produkter som returneres av FILTER funksjonen.

Alle filteruttrykk som sendes inn til CALCULATE funksjonen, er tabellfilteruttrykk. Et boolsk filteruttrykk er en kortformsnotasjon for å forbedre skrive- og leseopplevelsen. Internt kan Microsoft Power BI oversette boolske filteruttrykk til tabellfilteruttrykk, og det er slik den oversetter Omsetning (rødt)-måldefinisjonen din.

Revenue Red =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[Color] = "Red"
    )
)

Filtervirkemåte

To mulige standardresultater oppstår når du legger til filteruttrykk i CALCULATE funksjonen:

  • Hvis kolonnene (eller tabellene) ikke er i filterkontekst, legges nye filtre til i filterkonteksten for å evaluere CALCULATE uttrykket.
  • Hvis kolonnene (eller tabellene) allerede er i filterkontekst, overskrives de eksisterende filtrene av de nye filtrene for å evaluere CALCULATE uttrykket.

Eksemplene nedenfor viser hvordan det fungerer å legge til filteruttrykk i CALCULATE funksjonen.

Obs!

I hvert av eksemplene brukes det ingen filtre i tabellvisualobjektet.

Som i forrige aktivitet, ble målet Omsetning (rødt) lagt til i tabellvisualobjektet som grupperer etter område og vises omsetning.

Fordi ingen filtre brukes på Farge-kolonnen i Produkt-tabellen , legger evalueringen av målet til et nytt filter i filterkonteksten. I den første raden er verdien på 2 681 324,79 $ for røde produkter som ble solgt i området Australia.

Hvis du bytter den første kolonnen i tabellvisualobjektet fra Område til Farge , får du et annet resultat fordi Farge-kolonnen i Produkt-tabellen nå er i filterkontekst.

Målformelen Omsetning rød evaluerer Omsetning-målet ved å legge til et filter i Farge-kolonnen (til rødt) i Produkt-tabellen . Følgelig, i dette visualobjektet som grupperer etter farge, overskriver målformelen filterkonteksten med et nytt filter.

Kanskje er dette resultatet du vil ha, eller kanskje ikke. Den neste enheten introduserer KEEPFILTERS DAX-funksjonen, som er en filterendringsfunksjon som du kan bruke til å bevare filtre i stedet for å overskrive dem.