CALCULATE
gjelder:beregnet kolonneberegnet tabellMeasurevisualobjektberegning
Evaluerer et uttrykk i en endret filter kontekst.
Notat
Det finnes også CALCULATETABLE-funksjonen. Den utfører nøyaktig samme funksjonalitet, except den endrer filter konteksten brukt på et uttrykk som returnerer et tabellobjekt.
Syntaks
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametere
Vilkår | Definisjon |
---|---|
expression |
Uttrykket som skal evalueres. |
filter1, filter2,… |
(Valgfritt) Boolske uttrykk or tabelluttrykk som definerer filters, orfilter endringsfunksjoner. |
Uttrykket som brukes som first-parameteren, er i hovedsak det samme som en measure.
Filters kan være:
- Boolske filter uttrykk
- Tabell filter uttrykk
- Filter endringsfunksjoner
Når det finnes flere filters, kan de evalueres ved hjelp av AND (&&
) logiske operatoren, noe som betyr at all betingelser må være TRUE
, or av den logiske operatoren OR (||
), noe som betyr at en av betingelsene kan være true.
Boolske filter uttrykk
Et boolsk uttrykk filter er et uttrykk som evalueres til TRUE
orFALSE
. 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 or returnere en tabell med mindre de sendes som argumenter til aggregasjonsfunksjoner.
- De kan inneholde en aggregasjonsfunksjon som returnerer en skalar value. For eksempel
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Tabell filter uttrykk
Et tabelluttrykk filter bruker et tabellobjekt som en 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 filter betingelser, inkludert de som ikke kan defineres av et boolsk filter uttrykk.
Filter endringsfunksjoner
Filter endringsfunksjoner lar deg gjøre mer enn bare å legge til filters. De gir deg ekstra kontroll når du endrer filter kontekst.
Funksjon | Hensikt |
---|---|
REMOVEFILTERS | Fjern allfilters, orfilters fra én or flere kolonner i en tabell, or fra all kolonner i én enkelt tabell. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Fjern filters fra én or flere kolonner, or fra all kolonner i én enkelt tabell. |
KEEPFILTERS | Legg til filter uten å fjerne eksisterende filters i de samme kolonnene. |
USERELATIONSHIP | Engasjer en inaktiv relasjon mellom related kolonner, og i så fall blir den aktive relasjonen automatisk inaktiv. |
CROSSFILTER | Endre filter retning (fra både til enkel, or fra enkel til begge) or deaktivere en relasjon. |
1 Funksjonen ALLand variantene fungerer som både filter modifikatorer and som funksjoner som returnerer tabellobjekter. If REMOVEFILTERS-funksjonen støttes av verktøyet, er det bedre å bruke den til å fjerne filters.
Returner value
Den value som er resultatet av uttrykket.
Merknader
Når filter uttrykk er angitt, endrer CALCULATE-funksjonen filter konteksten for å evaluate uttrykket. For hvert filter uttrykk finnes det to mulige standardresultater når filter-uttrykket not er pakket inn i KEEPFILTERS-funksjonen:
- If kolonnene (or tabeller) ikke er i filter kontekst, legges nye filters til i filter konteksten for å evaluate uttrykket.
- If kolonnene (or tabeller) allerede er i filter kontekst, overskrives den eksisterende filters av den nye filters for å evaluateCALCULATE-uttrykket.
Funksjonen CALCULATE som brukes uten filters oppnår et bestemt krav. Den overfører radkonteksten til filter kontekst. Det kreves når et uttrykk (not en modell measure) som oppsummerer modelldata, må evalueres i radkontekst. Dette scenarioet kan skje i en beregnet kolonneformel or når et uttrykk i en gjentakelsesfunksjon evalueres. Vær oppmerksom på at når en modell measure brukes i radkontekst, er kontekstovergang automatisk.
Denne funksjonen støttes not for bruk i DirectQuery-modus når den brukes i beregnede kolonner or regler for sikkerhet på radnivå (RLS).
Eksempler
Følgende Sales-tabell measure definisjon gir et inntektsresultat, men bare for produkter som har fargen blå.
Eksempler i denne artikkelen kan brukes med sample Adventure Works DW 2020 Power BI Desktop-modellen. Hvis du vil ha modellen, kan du se DAXsample modell.
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 |
totalt | $109,809,274.20 | $9,602,850.97 |
CALCULATE-funksjonen evaluerer sum i Sales-tabellen -kolonnen i en endret filter kontekst. En ny filter legges til i Product tabell Farge-kolonnen–oroverskriver filter alle filter som allerede er brukt i kolonnen.
Følgende Sales-tabell measure definisjon gir et forhold mellom salg og salg for all salgskanaler.
Kanal | Salgsbeløp | Omsetning % totalkanal |
---|---|---|
Internett | KR 29 358 677,22 | 26.74% |
Forhandler | KR 80 450 596,98 | 73,26% |
totalt | $109,809,274.20 | 100,00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
Funksjonen DIVIDE deler et uttrykk som summerer Sales-tabellen kolonne value (i filter kontekst) med det samme uttrykket i en endret filter kontekst. Det er CALCULATE-funksjonen som endrer filter konteksten ved hjelp av REMOVEFILTERS-funksjonen, som er en filter endringsfunksjon. Den fjerner filters fra tabellen salgsordrekanal.
Følgende Beregnet kolonnedefinisjon for Kunde tabell klassifiserer kunder i en lojalitetsklasse. Det er et veldig enkelt scenario: Når omsetningen som produseres av kunden er mindre enn USD 2500, klassifiseres de som Lav; Ellers er de High.
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
I dette eksemplet konverteres radkonteksten til filter kontekst. Det kalles kontekstovergang. ALLEXCEPT-funksjonen fjerner filters fra tabellkolonnene allCustomerexceptCustomerKey.
Related innhold
Filter kontekstradkontekstCALCULATETABLE funksjonenFilter funksjoner