CALCULATE
Gilt für:Berechnete Spalte
Berechnete Tabelle
Measure
visuelle Berechnung
Wertet einen Ausdruck in einem geänderten Filterkontext aus.
Anmerkung
Es gibt auch die CALCULATETABLE Funktion. Es führt genau dieselbe Funktionalität aus, mit der Ausnahme, dass der Filterkontext auf einen Ausdruck angewendet wird, der ein Tabellenobjektzurückgibt.
Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parameter
Ausdruck | Definition |
---|---|
expression |
Der auszuwertende Ausdruck. |
filter1, filter2,… |
(Optional) Boolesche Ausdrücke oder Tabellenausdrücke, die Filter oder Filtermodifiziererfunktionen definieren. |
Der ausdruck, der als erster Parameter verwendet wird, ist im Wesentlichen identisch mit einem Measure.
Filter können folgendes sein:
- Boolesche Filterausdrücke
- Tabellenfilterausdrücke
- Filteränderungsfunktionen
Wenn mehrere Filter vorhanden sind, können sie mithilfe des AND (&&
) logischen Operatorausgewertet werden, was bedeutet, dass alle Bedingungen TRUE
sein müssen, oder durch den logischen Operator OR (||
), was bedeutet, dass beide Bedingungen wahr sein können.
Boolesche Filterausdrücke
Ein boolescher Ausdrucksfilter ist ein Ausdruck, der zu TRUE
oder FALSE
ausgewertet wird. Es gibt mehrere Regeln, die sie einhalten müssen:
- Sie können auf Spalten aus einer einzelnen Tabelle verweisen.
- Sie können keine Measures referenzieren.
- Sie können keine geschachtelte CALCULATE-Funktion verwenden.
Ab der Version vom September 2021 von Power BI Desktop gelten auch die folgenden:
- Sie können keine Funktionen verwenden, die eine Tabelle scannen oder zurückgeben, es sei denn, sie werden als Argumente an Aggregationsfunktionen übergeben.
- Sie können eine Aggregationsfunktion enthalten, die einen skalaren Wert zurückgibt. Zum Beispiel
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Tabellenfilterausdruck
Ein Tabellenausdrucksfilter wendet ein Tabellenobjekt als Filter an. Es könnte ein Verweis auf eine Modelltabelle sein, aber wahrscheinlicher ist es eine Funktion, die ein Tabellenobjekt zurückgibt. Sie können die funktion FILTER verwenden, um komplexe Filterbedingungen anzuwenden, einschließlich derjenigen, die nicht durch einen booleschen Filterausdruck definiert werden können.
Filtermodifiziererfunktionen
Filtermodifiziererfunktionen ermöglichen es Ihnen, mehr zu erledigen als einfach Filter hinzuzufügen. Sie bieten Ihnen zusätzliche Kontrolle beim Ändern des Filterkontexts.
Funktion | Zweck |
---|---|
REMOVEFILTERS | Entfernen Sie alle Filter oder Filter aus einer oder mehreren Spalten einer Tabelle oder aus allen Spalten einer einzelnen Tabelle. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Entfernen Sie Filter aus einer oder mehreren Spalten oder aus allen Spalten einer einzelnen Tabelle. |
KEEPFILTERS | Fügen Sie Filter hinzu, ohne vorhandene Filter in denselben Spalten zu entfernen. |
USERELATIONSHIP | Binden Sie eine inaktive Beziehung zwischen verwandten Spalten ein, in diesem Fall wird die aktive Beziehung automatisch inaktiv. |
CROSSFILTER | Ändern Sie die Filterrichtung (von beiden zu einem einzelnen oder von single zu beides), oder deaktivieren Sie eine Beziehung. |
1 Die ALL-Funktion und die zugehörigen Varianten verhalten sich sowohl als Filtermodifizierer als auch als Funktionen, die Tabellenobjekte zurückgeben. Wenn die REMOVEFILTERS-Funktion von Ihrem Tool unterstützt wird, empfiehlt es sich, Filter zu entfernen.
Rückgabewert
Der Wert, der das Ergebnis des Ausdrucks ist.
Bemerkungen
Wenn Filterausdrücke bereitgestellt werden, ändert die CALCULATE-Funktion den Filterkontext, um den Ausdruck auszuwerten. Für jeden Filterausdruck gibt es zwei mögliche Standardergebnisse, wenn der Filterausdruck nicht in die funktion KEEPFILTERS eingeschlossen wird:
- Wenn sich die Spalten (oder Tabellen) nicht im Filterkontext befinden, werden dem Filterkontext neue Filter hinzugefügt, um den Ausdruck auszuwerten.
- Wenn sich die Spalten (oder Tabellen) bereits im Filterkontext befinden, werden die vorhandenen Filter von den neuen Filtern überschrieben, um den CALCULATE Ausdruck auszuwerten.
Die CALCULATE Funktion, die ohne Filter verwendet wird, eine bestimmte Anforderung erreicht. Er übergibt den Zeilenkontext in den Filterkontext. Es ist erforderlich, wenn ein Ausdruck (kein Modellmaß) zum Zusammenfassen von Modelldaten im Zeilenkontext ausgewertet werden muss. Dieses Szenario kann in einer berechneten Spaltenformel auftreten oder wenn ein Ausdruck in einer Iteratorfunktion ausgewertet wird. Beachten Sie, dass der Kontextübergang automatisch erfolgt, wenn ein Modellmaß im Zeilenkontext verwendet wird.
Diese Funktion wird für die Verwendung im DirectQuery-Modus nicht unterstützt, wenn sie in berechneten Spalten oder Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.
Beispiele
Die folgende Definition von "Sales table measure" erzeugt ein Umsatzergebnis, aber nur für Produkte mit der Farbe Blau.
Beispiele in diesem Artikel können mit dem Beispielmodell Adventure Works DW 2020 Power BI Desktop verwendet werden. Informationen zum Abrufen des Modells finden Sie unter DAX Beispielmodell.
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Kategorie | Verkaufsbetrag | Blauer Umsatz |
---|---|---|
Zubehör | $1.272.057,89 | $165,406,62 |
Fahrräder | $94,620,526.21 | $8,374,313,88 |
Kleidung | $2.117.613,45 | $259,488,37 |
Komponenten | $11.799.076,66 | $803,642.10 |
Gesamt- | 109.809.274,20 $ | $9.602.850,97 |
Die funktion CALCULATE wertet die Summe der Tabelle SalesSales Amount spalte in einem geänderten Filterkontext aus. Der Tabelle Product Tabelle Color Spalte wird ein neuer Filter hinzugefügt, oder der Filter überschreibt alle Filter, die bereits auf die Spalte angewendet wurden.
Die folgende Definition von "Sales table measure" erzeugt ein Verhältnis zwischen Umsatz und Umsatz für alle Vertriebskanäle.
Kanal | Verkaufsbetrag | Umsatz % Gesamtkanal |
---|---|---|
Internet | $29,358,677,22 | 26.74% |
Wiederverkäufer | $80,450,596,98 | 73.26% |
Gesamt- | 109.809.274,20 $ | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
Die funktion DIVIDE dividiert einen Ausdruck, der die Tabelle Sales tabelle Sales Amount spaltenwert (im Filterkontext) durch denselben Ausdruck in einem geänderten Filterkontext addiert. Es ist die CALCULATE-Funktion, die den Filterkontext mithilfe der REMOVEFILTERS-Funktion ändert, bei der es sich um eine Filtermodifiziererfunktion handelt. Sie entfernt Filter aus der Tabelle Sales OrderChannel Spalte.
Im folgenden Kunden Tabelle berechnete Spaltendefinition klassifiziert Kunden in eine Treueklasse. Es ist ein sehr einfaches Szenario: Wenn der vom Kunden erzeugte Umsatz kleiner als 2500 $ ist, werden sie als Lowklassifiziert; andernfalls sind sie High.
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
In diesem Beispiel wird der Zeilenkontext in den Filterkontext konvertiert. Es wird als Kontextübergangbezeichnet. Mit der funktion
Verwandte Inhalte
FilterkontextZeilenkontextCALCULATETABLE FunktionFilterfunktionen