BERÄKNACALCULATE

Utvärderar ett uttryck i en modifierad filterkontext.Evaluates an expression in a modified filter context.

Anteckning

Dessutom finns funktionen CALCULATETABLE.There's also the CALCULATETABLE function. Den utför exakt samma funktion, förutom att den modifierar filterkontexten som tillämpas på ett uttryck som returnerar ett tabellobjekt.It performs exactly the same functionality, except it modifies the filter context applied to an expression that returns a table object.

SyntaxSyntax

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

ParametrarParameters

TermTerm DefinitionDefinition
uttryckexpression Det uttryck som ska utvärderas.The expression to be evaluated.
filter1, filter2,...filter1, filter2,… (Valfritt) Booleska uttryck eller tabelluttryck som definierar filter, eller funktioner för filtermodifiering.(Optional) Boolean expressions or table expressions that defines filters, or filter modifier functions.

Uttrycket som används som första parameter är i princip samma som ett mått.The expression used as the first parameter is essentially the same as a measure.

Filter kan vara:Filters can be:

  • Booleska filteruttryckBoolean filter expressions
  • TabellfilteruttryckTable filter expressions
  • Funktioner för filtermodifieringFilter modification functions

När det finns flera filter utvärderas de med hjälp av den logiska operatorn AND.When there are multiple filters, they're evaluated by using the AND logical operator. Det innebär att alla villkor måste utvärderas till TRUE samtidigt.That means all conditions must be TRUE at the same time.

Booleska filteruttryckBoolean filter expressions

Ett booleskt uttrycksfilter är ett uttryck som utvärderas till TRUE eller FALSE.A Boolean expression filter is an expression that evaluates to TRUE or FALSE. De måste följa fler regler:There are several rules that they must abide by:

  • De kan bara referera till en enda kolumn.They can reference only a single column.
  • De kan inte referera till ett mått.They cannot reference measures.
  • De kan inte ha en kapslad CALCULATE-funktion.They cannot use a nested CALCULATE function.
  • De kan inte använda funktioner som skannar eller returnerar en tabell, inklusive aggregeringsfunktioner.They cannot use functions that scan or return a table, including aggregation functions.

TabellfilteruttryckTable filter expression

Ett tabelluttrycksfilter använder ett tabellobjekt som ett filter.A table expression filter applies a table object as a filter. Det kan vara en referens till en modelltabell, men förmodligen är det en funktion som returnerar ett tabellobjekt.It could be a reference to a model table, but more likely it's a function that returns a table object. 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.You can use the FILTER function to apply complex filter conditions, including those that cannot be defined by a Boolean filter expression.

Funktioner för filtermodifieringFilter modifier functions

Med funktioner för filtermodifiering kan du göra mer än att bara lägga till filter.Filter modification functions allow you to do more than simply add filters. De ger dig ytterligare kontroll när du modifierar filterkontexten.They provide you with additional control when modifying filter context.

FunktionFunction SyftePurpose
REMOVEFILTERSREMOVEFILTERS Ta bort alla filter, filter från en eller flera kolumner i en tabell eller filter från alla kolumner i en enskild tabell.Remove all filters, or filters from one or more columns of a table, or from all columns of a single table.
ALL 1, ALLEXCEPT, ALLNOBLANKROWALL 1, ALLEXCEPT, ALLNOBLANKROW Ta bort filter från en eller flera kolumner, eller från alla kolumner i en enskild tabell.Remove filters from one or more columns, or from all columns of a single table.
KEEPFILTERSKEEPFILTERS Lägg till filter utan att ta bort befintliga filter för samma kolumner.Add filter without removing existing filters on the same columns.
USERELATIONSHIPUSERELATIONSHIP Upprätta en inaktiv relation mellan relaterade kolumner, vilket gör att den aktiva relationen inaktiveras automatiskt.Engage an inactive relationship between related columns, in which case the active relationship will automatically become inactive.
CROSSFILTERCROSSFILTER Ändra filterriktningen (från båda till ena eller från ena till båda) eller inaktivera en relation.Modify filter direction (from both to single, or from single to both) or disable a relationship.

1 Funktionen ALL och dess varianter fungerar som både filtermodifierare och som funktioner som returnerar tabellobjekt.1 The ALL function and its variants behave as both filter modifiers and as functions that return table objects. Om ditt verktyg har stöd för funktionen REMOVEFILTERS är det bättre att använda den till att ta bort filter.If the REMOVEFILTERS function is supported by your tool, it's better to use it to remove filters.

ReturvärdeReturn value

Det värde som är resultatet av uttrycket.The value that is the result of the expression.

KommentarerRemarks

  • När du anger filteruttryck ändrar funktionen CALCULATE filterkontexten för att utvärdera uttrycket.When filter expressions are provided, the CALCULATE function modifies the filter context to evaluate the expression. Det finns två möjliga standardresultat för varje filteruttryck när filteruttrycket inte är omslutet i KEEPFILTERS-funktionen:For each filter expression, there are two possible standard outcomes when the filter expression is not wrapped in the KEEPFILTERS function:

    • Om kolumnerna (eller tabellerna) inte finns med i filterkontexten läggs nya filter till i filterkontexten för att utvärdera uttrycket.If the columns (or tables) aren't in the filter context, then new filters will be added to the filter context to evaluate the expression.
    • Om kolumnerna (eller tabellerna) redan finns med i filterkontexten skrivs befintliga filter över av de nya filtren för att utvärdera CALCULATE-uttrycket.If the columns (or tables) are already in the filter context, the existing filters will be overwritten by the new filters to evaluate the CALCULATE expression.
  • Funktionen CALCULATE kan användas utan filter i ett visst syfte.The CALCULATE function used without filters achieves a specific requirement. Då görs radkontext om till filterkontext.It transitions row context to filter context. Det krävs när ett uttryck (inte ett modellmått) som sammanfattar modelldata måste utvärderas i en radkontext.It's required when an expression (not a model measure) that summarizes model data needs to be evaluated in row context. Det här scenariot kan inträffa i en beräknad kolumnformel eller när ett uttryck i en iteratorfunktion utvärderas.This scenario can happen in a calculated column formula or when an expression in an iterator function is evaluated. När ett modellmått används i en radkontext sker kontextövergången automatiskt.Note that when a model measure is used in row context, context transition is automatic.

  • 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).This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.

ExempelExamples

Följande måttdefinition för tabellen Sales skapar ett intäktsresultat, men bara för produkter som har blå färg.The following Sales table measure definition produces a revenue result, but only for products that have the color blue.

Exemplen i den här artikeln kan läggas till i exempelmodellen för Power BI Desktop. Läs mer i DAX-exempelmodell om du vill hämta modellen.Examples in this article can be added to the Power BI Desktop sample model. To get the model, see DAX sample model.

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
KategoriCategory FörsäljningsbeloppSales Amount Blå intäkterBlue Revenue
TillbehörAccessories $1,272,057.89$1,272,057.89 $165,406.62$165,406.62
CyklarBikes $94,620,526.21$94,620,526.21 $8,374,313.88$8,374,313.88
KläderClothing $2,117,613.45$2,117,613.45 $259,488.37$259,488.37
KomponenterComponents $11,799,076.66$11,799,076.66 $803,642.10$803,642.10
TotaltTotal $109,809,274.20$109,809,274.20 $9,602,850.97$9,602,850.97

Funktionen CALCULATE utvärderar summan för kolumnen Försäljningsbelopp i tabellen Sales i en modifierad filterkontext.The CALCULATE function evaluates the sum of the Sales table Sales Amount column in a modified filter context. Ett nytt filter läggs till i kolumnen Color i tabellen Product, eller så skriver filtret över eventuella filter som redan används i kolumnen.A new filter is added to the Product table Color column—or, the filter overwrites any filter that's already applied to the column.

Följande måttdefinition för tabellen Sales skapar en andel av försäljningen sett till samtliga försäljningskanaler.The following Sales table measure definition produces a ratio of sales over sales for all sales channels.

KanalChannel FörsäljningsbeloppSales Amount Kanalens % av totalbeloppetRevenue % Total Channel
InternetInternet $29,358,677.22$29,358,677.22 26.74%26.74%
ResellerReseller $80,450,596.98$80,450,596.98 73.26%73.26%
TotaltTotal $109,809,274.20$109,809,274.20 100,00 %100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

Funktionen DIVIDE delar ett uttryck som summerar kolumnen Sales Amount i tabellen Sales (i filterkontexten) med samma uttryck i en modifierad filterkontext.The DIVIDE function divides an expression that sums of the Sales table Sales Amount column value (in the filter context) by the same expression in a modified filter context. Det är funktionen CALCULATE som modifierar filterkontexten med hjälp av funktionen REMOVEFILTERS, som är en funktion för filtermodifiering.It's the CALCULATE function that modifies the filter context by using the REMOVEFILTERS function, which is a filter modifier function. Den tar bort eventuella filter från kolumnen Channel i tabellen Sales.It removes filters from the Sales Order table Channel column.

Följande beräknade kolumndefinition för tabellen Customer delar in kunder i olika lojalitetsklasser.The following Customer table calculated column definition classifies customers into a loyalty class. Det är ett mycket enkelt scenario: När intäkterna som kunden genererar är mindre än 2 500 USD klassificeras kunden som Low, annars klassificeras kunden som High.It's a very simple scenario: When the revenue produced by the customer is less than $2500, they're classified as Low; otherwise they're High.

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

I det här exemplet omvandlas radkontexten till filterkontexten.In this example, row context is converted to the filter context. Det här kallas för kontextövergång.It's known as context transition. Funktionen ALLEXCEPT tar bort filter från alla kolumner i tabellen Customer förutom kolumnen CustomerKey.The ALLEXCEPT function removes filters from all Customer table columns except the CustomerKey column.

Se ävenSee also

FilterkontextFilter context
RadkontextRow context
Funktionen CALCULATETABLECALCULATETABLE function
Filtrera funktionerFilter functions