BEREGNE

Gjelder beregnet beregning av beregnet tabellfor beregnet kolonne

Evaluerer et uttrykk i en endret filterkontekst.

Merk

Det finnes også CALCULATETABLE-funksjonen . Den utfører nøyaktig samme funksjonalitet, bortsett fra at den endrer filterkonteksten som brukes på et uttrykk som returnerer et tabellobjekt.

Syntaks

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

Parametere

Term Definisjon
Uttrykk Uttrykket som skal evalueres.
filter1, filter2,... (Valgfritt) Boolske uttrykk eller tabelluttrykk som definerer filtre, eller filtermodifikatorfunksjoner.

Uttrykket som brukes som den første parameteren, er i hovedsak det samme som et mål.

Filtre kan være:

  • Boolske filteruttrykk
  • Tabellfilteruttrykk
  • Filtermodifikasjonsfunksjoner

Når det finnes flere filtre, kan de evalueres ved hjelp av den logiske operatoren AND (&&&), noe som betyr at alle betingelser må være SANN, eller av den logiske operatoren OR (||), noe som betyr at begge betingelsene kan være sanne.

Boolske filteruttrykk

Et boolsk uttrykk-filter er et uttrykk som evalueres til TRUE eller FALSE. Det finnes flere regler de må følge:

  • De kan referere til kolonner fra én enkelt tabell.
  • De kan ikke referere til mål.
  • De kan ikke bruke en nestet CALCULATE-funksjon.

Fra og med september 2021-utgivelsen av Power BI Desktop gjelder følgende også:

  • De kan ikke bruke funksjoner som skanner eller returnerer en tabell med mindre de sendes som argumenter til aggregasjonsfunksjoner.
  • De kan inneholde en aggregasjonsfunksjon som returnerer en skalarverdi. Eksempel:
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

Tabellfilteruttrykk

Et tabelluttrykkfilter bruker et tabellobjekt som et filter. Det kan være en referanse til en modelltabell, men mer sannsynlig er det en funksjon som returnerer et tabellobjekt. Du kan bruke FILTER-funksjonen til å bruke komplekse filterbetingelser, inkludert de som ikke kan defineres av et boolsk filteruttrykk.

Funksjoner for filtermoderator

Filtrer endringsfunksjoner lar deg gjøre mer enn bare å legge til filtre. De gir deg ekstra kontroll når du endrer filterkontekst.

Function Formål
REMOVEFILTERS Fjern alle filtre eller filtre fra én eller flere kolonner i en tabell, eller fra alle kolonnene i én enkelt tabell.
ALLE1, ALLEXCEPT, ALLNOBLANKROW Fjern filtre fra én eller flere kolonner, eller fra alle kolonnene i én enkelt tabell.
KEEPFILTERS Legg til filter uten å fjerne eksisterende filtre i de samme kolonnene.
USERELATIONSHIP Engasjer en inaktiv relasjon mellom relaterte kolonner, og i så fall blir den aktive relasjonen automatisk inaktiv.
CROSSFILTER Endre filterretning (fra både til enkel eller fra enkel til begge) eller deaktiver en relasjon.

1 ALL-funksjonen og variantene fungerer som både filtermodifiserte og som funksjoner som returnerer tabellobjekter. Hvis REMOVEFILTERS-funksjonen støttes av verktøyet, er det bedre å bruke den til å fjerne filtre.

Returverdi

Verdien som er resultatet av uttrykket.

Merknader

  • Når filteruttrykk er angitt, endrer CALCULATE-funksjonen filterkonteksten for å evaluere uttrykket. For hvert filteruttrykk er det to mulige standardresultater når filteruttrykket ikke er pakket inn i KEEPFILTERS-funksjonen:

    • Hvis kolonnene (eller tabellene) ikke er i filterkonteksten, legges nye filtre til i filterkonteksten for å evaluere uttrykket.
    • Hvis kolonnene (eller tabellene) allerede er i filterkonteksten, overskrives de eksisterende filtrene av de nye filtrene for å evaluere CALCULATE-uttrykket.
  • CALCULATE-funksjonen som brukes uten filtre, oppnår et bestemt krav. Den overfører radkontekst til filterkontekst. Det kreves når et uttrykk (ikke et modellmål) som oppsummerer modelldata, må evalueres i radkontekst. Dette scenarioet kan forekomme i en beregnet kolonne-formel, eller når et uttrykk i en gjentakelsesfunksjon evalueres. Vær oppmerksom på at når et modellmål brukes i radkontekst, er kontekstovergang automatisk.

  • Denne funksjonen støttes ikke for bruk i DirectQuery-modus når den brukes i beregnede kolonner eller regler for sikkerhet på radnivå (RLS).

Eksempler

Måldefinisjonen for salg-tabellen nedenfor gir et inntektsresultat, men bare for produkter som har fargen blå.

Eksempler i denne artikkelen kan brukes med eksempelmodellen Adventure Works DW 2020 Power BI Desktop. Hvis du vil ha modellen, kan du se DAX-eksempelmodellen.

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
Kategori Salgsbeløp Blå omsetning
Tilbehør KR 1 272 057,89 KR 165 406,62
Sykler KR 94 620 526,21 KR 8 374 313,88
Klær KR 2 117 613,45 kr 2 59 488,37
Komponenter KR 11 799 076,66 KR 803 642,10
I alt kr 109 809 274,20 KR 9 602 850,97

CALCULATE-funksjonen evaluerer summen av salgstabellenSalgsbeløp-kolonnen i en endret filterkontekst. Et nytt filter legges til i kolonnen Produkttabellfarge , eller filteret overskriver alle filtre som allerede er brukt i kolonnen.

Måldefinisjonen for salgstabellen nedenfor gir et forhold mellom salg og salg for alle salgskanaler.

Kanal Salgsbeløp Omsetning i % totalt kanal
Internett KR 29 358 677,22 26.74%
Forhandler 80 450 596,98 USD 73.26%
I alt kr 109 809 274,20 100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

DIVIDE-funksjonen deler et uttrykk som summerer kolonneverdien Salgsbeløp for salg (i filterkonteksten) med samme uttrykk i en endret filterkontekst. Det er CALCULATE-funksjonen som endrer filterkonteksten ved hjelp av REMOVEFILTERS-funksjonen, som er en filterendringsfunksjon. Den fjerner filtre fra kolonnen Salgsordretabellkanal.

Følgende kundetabell beregnet kolonnedefinisjon klassifiserer kunder i en lojalitetsklasse. Det er et veldig enkelt scenario: Når inntektene som produseres av kunden er mindre enn USD 2500, klassifiseres de som lave, ellers er de høye.

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

I dette eksemplet konverteres radkonteksten til filterkonteksten. Det kalles kontekstovergang. ALLEXCEPT-funksjonen fjerner filtre fra alle kundetabellkolonner unntatt CustomerKey-kolonnen.

Filterkontekst
Radkontekst
CALCULATETABLE (funksjon)
Filterfunksjoner