CALCULATETABLE
Gäller för: Beräknad kolumn Beräknad tabell Mått Visuell beräkning
Utvärderar ett tabelluttryck i en modifierad filterkontext.
Kommentar
Det finns också funktionen CALCULATE . Den utför exakt samma funktioner, förutom att den ändrar 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 filtermodifierarfunktioner. |
Uttrycket som används som den första parametern måste vara en modelltabell eller en funktion som returnerar en tabell.
Filter kan vara:
- Booleska filteruttryck
- Tabellfilteruttryck
- Funktioner för filterändring
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 vara SANNA samtidigt.
Booleska filteruttryck
Ett booleskt uttrycksfilter är ett uttryck som utvärderas till TRUE eller FALSE. Det finns flera regler som de måste följa:
- De kan bara referera till en enda kolumn.
- De kan inte referera till mått.
- De kan inte använda en kapslad CALCULATE-funktion.
Från och med september 2021-versionen av Power BI Desktop gäller även följande:
- De kan inte använda funktioner som söker igenom eller returnerar en tabell om de inte skickas som argument till aggregeringsfunktioner.
- De kan innehålla en aggregeringsfunktion som returnerar ett skalärt värde.
Tabellfilteruttryck
Ett tabelluttrycksfilter använder ett tabellobjekt som ett filter. Det kan vara en referens till en modelltabell, men mer troligt är det en funktion som returnerar ett tabellobjekt. Du kan använda funktionen FILTER för att tillämpa komplexa filtervillkor, inklusive de som inte kan definieras av ett booleskt filteruttryck.
Filtermodifierarfunktioner
Med filtermodifierarfunktioner kan du göra mer än att bara lägga till filter. De ger dig ytterligare kontroll när du ändrar filterkontexten.
Funktion | Syfte |
---|---|
REMOVEFILTERS | Ta bort alla filter eller filter från en eller flera kolumner i en tabell eller från alla kolumner i en enda tabell. |
ALLA 1, 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 på samma kolumner. |
USERELATIONSHIP | Engagera en inaktiv relation mellan relaterade kolumner, i vilket fall den aktiva relationen automatiskt blir inaktiv. |
CROSSFILTER | Ändra filterriktningen (från båda till enstaka eller från enstaka till båda) eller inaktivera en relation. |
1 FUNKTIONEN ALL och dess varianter fungerar både som filtermodifierare och som funktioner som returnerar tabellobjekt. Om funktionen REMOVEFILTERS stöds av verktyget är det bättre att använda den för att ta bort filter.
Returvärde
En tabell med värden.
Kommentarer
När filteruttryck tillhandahålls ändrar funktionen CALCULATETABLE filterkontexten för att utvärdera uttrycket. För varje filteruttryck finns det två möjliga standardutfall när filteruttrycket inte omsluts i funktionen KEEPFILTERS:
- Om kolumnerna (eller tabellerna) inte finns i filterkontexten läggs nya filter till i filterkontexten för att utvärdera uttrycket.
- Om kolumnerna (eller tabellerna) redan finns i filterkontexten skrivs de befintliga filtren över av de nya filtren för att utvärdera CALCULATETABLE-uttrycket.
Den här funktionen stöds inte för användning i DirectQuery-läge när den används i beräknade kolumner eller säkerhetsregler 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 och all försäljning för år 2006.
Följande formel:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Det resulterar i följande tabell:
Radetiketter | Internet SalesAmount_USD | CalculateTable 2006 Internet Sales | Internet sales to 2006 ratio |
---|---|---|---|
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 |