CALCULATETABLE
Utvärderar ett tabelluttryck i en modifierad filterkontext.
Anteckning
Dessutom finns funktionen CALCULATE. Den utför exakt samma funktion, förutom att den modifierar filterkontexten som tillämpas på ett uttryck som returnerar ett skalärt värde.
Syntax
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametrar
| Period | Definition |
|---|---|
| uttryck | Tabelluttrycket som ska utvärderas. |
| filter1, filter2,... | (Valfritt) Booleska uttryck eller tabelluttryck som definierar filter, eller funktioner för filtermodifiering. |
Uttrycket som används i den första parametern måste vara en modelltabell eller funktion som returnerar en tabell.
Filter kan vara:
- Booleska filteruttryck
- Tabellfilteruttryck
- Funktioner för filtermodifiering
När det finns flera filter utvärderas de med hjälp av den logiska operatorn AND. Det innebär att alla villkor måste utvärderas till TRUE samtidigt.
Booleska filteruttryck
Ett booleskt uttrycksfilter är ett uttryck som utvärderas till TRUE eller FALSE. De måste följa fler regler:
- De kan bara referera till en enda kolumn.
- De kan inte referera till ett mått.
- De kan inte ha en kapslad CALCULATE-funktion.
Från och med versionen från september 2021 Power BI Desktop gäller även följande:
- De kan inte använda funktioner som skannar eller returnerar en tabell om de inte skickas som argument till sammansättningsfunktioner.
- De kan innehålla en sammansättningsfunktion som returnerar ett skalära värde.
Tabellfilteruttryck
Ett tabelluttrycksfilter använder ett tabellobjekt som ett filter. Det kan vara en referens till en modelltabell, men förmodligen är det en funktion som returnerar ett tabellobjekt. Du kan använda funktionen FILTER för att tillämpa komplexa filtervillkor, bland annat sådana som inte kan definieras via ett booleskt filteruttryck.
Funktioner för filtermodifiering
Med funktioner för filtermodifierare kan du göra mer än att bara lägga till filter. De ger dig ytterligare kontroll när du modifierar filterkontexten.
| Funktion | Syfte |
|---|---|
| REMOVEFILTERS | Ta bort alla filter, filter från en eller flera kolumner i en tabell eller filter från alla kolumner i en enskild tabell. |
| ALL1, ALLEXCEPT, ALLNOBLANKROW | Ta bort filter från en eller flera kolumner, eller från alla kolumner i en enskild tabell. |
| KEEPFILTERS | Lägg till filter utan att ta bort befintliga filter för samma kolumner. |
| USERELATIONSHIP | Upprätta en inaktiv relation mellan relaterade kolumner, vilket gör att den aktiva relationen inaktiveras automatiskt. |
| CROSSFILTER | Ändra filterriktningen (från båda till ena eller från ena till båda) eller inaktivera en relation. |
1 Funktionen ALL och dess varianter fungerar som både filtermodifierare och som funktioner som returnerar tabellobjekt. Om ditt verktyg har stöd för funktionen REMOVEFILTERS är det bättre att använda den till att ta bort filter.
Returvärde
En tabell med värden.
Kommentarer
När du anger filteruttryck modifierar funktionen CALCULATETABLE filterkontexten för att utvärdera uttrycket. Det finns två möjliga standardresultat för varje filteruttryck när filteruttrycket inte är omslutet i KEEPFILTERS-funktionen:
- Om kolumnerna (eller tabellerna) inte finns med i filterkontexten läggs nya filter till i filterkontexten för att utvärdera uttrycket.
- Om kolumnerna (eller tabellerna) redan finns med i filterkontexten skrivs befintliga filter över av de nya filtren för att utvärdera CALCULATETABLE-uttrycket.
Den här funktionen kan inte användas i DirectQuery-läge när den används i beräknade kolumner eller regler för säkerhet på radnivå (RLS).
Exempel
I följande exempel används funktionen CALCULATETABLE för att hämta summan av Internetförsäljningen för 2006. Det här värdet används senare för att beräkna förhållandet mellan Internetförsäljning jämfört med all försäljning för året 2006.
Följande formel:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Resultatet blir följande tabell:
| Radetiketter | Internet SalesAmount_USD | CalculateTable, Internetförsäljning 2006 | Förhållande, Internetförsäljning 2006 |
|---|---|---|---|
| 2005 | $2,627,031.40 | $5,681,440.58 | 0,46 |
| 2006 | $5,681,440.58 | $5,681,440.58 | 1,00 |
| 2007 | $8,705,066.67 | $5,681,440.58 | 1,53 |
| 2008 | $9,041,288.80 | $5,681,440.58 | 1,59 |
| Totalsumma | $26,054,827.45 | $5,681,440.58 | 4,59 |