CALCULATETABLE
Evaluerer et tabeludtryk i en ændret filterkontekst.
Bemærk
Der er også funktionen CALCULATE. Den udfører præcis den samme funktionalitet, men den ændrer den filterkontekst, der anvendes på et udtryk, som returnerer en skalar værdi.
Syntaks
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametre
| Begreb | Definition |
|---|---|
| udtryk | Det tabeludtryk, der skal evalueres. |
| filter1, filter2,… | (Valgfrit) Booleske udtryk eller tabeludtryk, der definerer filtre, eller filterændringsfunktioner. |
Det udtryk, der bruges som den første parameter, skal være en modeltabel eller en funktion, der returnerer en tabel.
Filtre kan være:
- Booleske filterudtryk
- Tabelfilterudtryk
- Filterændringsfunktioner
Når der er flere filtre, evalueres de ved hjælp af den logiske operator AND. Det betyder, at alle betingelser skal være TRUE på samme tid.
Booleske filterudtryk
Et boolesk udtryksfilter er et udtryk, der evalueres til TRUE eller FALSE. Der er flere regler, de skal overholde:
- De kan kun referere til en enkelt kolonne.
- De kan ikke referere til målinger.
- De kan ikke bruge en indlejret CALCULATE-funktion.
fra og med den 2021. September-versionen af Power BI Desktop gælder følgende også:
- De kan ikke bruge funktioner, der scanner eller returnerer en tabel, medmindre de sendes som argumenter til Sammenlægnings funktioner.
- De kan indeholde en sammenlægningsfunktion, der returnerer en skalaværdi.
Tabelfilterudtryk
Et tabeludtryksfilter anvender et tabelobjekt som filter. Det kan være en reference til en modeltabel, men det er mere sandsynligt en funktion, der returnerer et tabelobjekt. Du kan bruge funktionen FILTER til at anvende komplekse filterbetingelser, herunder dem, der ikke kan defineres af et boolesk filterudtryk.
Filterændringsfunktioner
Filter modificerings funktioner giver dig mulighed for at gøre mere end blot at tilføje filtre. De giver dig yderligere kontrol, når du ændrer filterkontekst.
| Funktion | Formål |
|---|---|
| REMOVEFILTERS | Fjern alle filtre eller filtre fra en eller flere kolonner i en tabel eller fra alle kolonner i en enkelt tabel. |
| AlleALLEXCEPT, ALLNOBLANKROW | Fjern filtre fra en eller flere kolonner eller fra alle kolonner i en enkelt tabel. |
| KEEPFILTERS | Tilføj filtre uden at fjerne eksisterende filtre på de samme kolonner. |
| USERELATIONSHIP | Opret en inaktiv relation mellem relaterede kolonner, hvorefter den aktive relation automatisk bliver inaktiv. |
| CROSSFILTER | Rediger filterretningen (fra begge til en enkelt eller fra en enkelt til begge), eller deaktiver en relation. |
1 Funktionen ALL og dens varianter fungerer både som filterændringsfunktioner og som funktioner, der returnerer tabelobjekter. Hvis funktionen REMOVEFILTERS understøttes af dit værktøj, er det bedre at bruge den til at fjerne filtre.
Returværdi
En tabel med værdier.
Bemærkninger
Når der anvendes filterudtryk, ændrer funktionen CALCULATETABLE filterkonteksten for at evaluere udtrykket. For hvert filterudtryk er der to mulige standardresultater, når filterudtrykket ikke er ombrudt i funktionen KEEPFILTERS:
- Hvis kolonnerne (eller tabellerne) ikke er i filterkonteksten, føjes der nye filtre til filterkonteksten for at evaluere udtrykket.
- Hvis kolonnerne (eller tabellerne) allerede er i filter konteksten, overskrives de eksisterende filtre med de nye filtre for at evaluere udtrykket CALCULATETABLE.
Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller i regler for sikkerhed på rækkeniveau.
Eksempel
I følgende eksempel bruges funktionen CALCULATETABLE til at beregne summen af internetsalg for 2006. Denne værdi bruges senere til at beregne forholdet mellem internetsalg sammenlignet med alt salg for året 2006.
Følgende formel:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Den resulterer i følgende tabel:
| Rækkeetiketter | Internet SalesAmount_USD | CalculateTable 2006 Internet Sales | Internet Sales to 2006 ratio |
|---|---|---|---|
| 2005 | USD 2.627.031,40 | USD 5.681.440,58 | 0,46 |
| 2006 | USD 5.681.440,58 | USD 5.681.440,58 | 1,00 |
| 2007 | USD 8.705.066,67 | USD 5.681.440,58 | 1,53 |
| 2008 | USD 9.041.288,80 | USD 5.681.440,58 | 1,59 |
| Samlet total | USD 26.054.827,45 | USD 5.681.440,58 | 4,59 |