CALCULATE
Gilt für:Berechnete Spalteberechnete TabelleMeasurevisuelle Berechnung
Wertet einen Ausdruck in einem geänderten filter Kontext aus.
Anmerkung
Es gibt auch die CALCULATETABLE Funktion. Es führt genau dieselbe Funktionalität aus, except wird der filter Kontext auf einen Ausdruck angewendet, der ein Tabellenobjektzurückgibt.
Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parameter
Ausdruck | Definition |
---|---|
expression |
Der auszuwertende Ausdruck. |
filter1, filter2,… |
(Optional) Boolesche Ausdrücke or Tabellenausdrücke, die filters, orfilter Modifiziererfunktionen definieren. |
Der Ausdruck, der als first-Parameter verwendet wird, ist im Wesentlichen mit einem measureidentisch.
Filters kann folgendes sein:
- Boolesche filter Ausdrücke
- Tabellenfilter Ausdrücke
- Filter Änderungsfunktionen
Wenn mehrere filtersvorhanden sind, können sie mithilfe des AND (&&
) logischen Operatorausgewertet werden, was bedeutet, dass all Bedingungen durch den logischen Operator TRUE
(or) OR||
werden müssen, was bedeutet, dass beide Bedingungen truewerden können.
Boolesche filter Ausdrücke
Ein boolescher Ausdruck filter ist ein Ausdruck, der zu TRUE
orFALSE
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 or eine Tabelle zurückgeben, es sei denn, sie werden als Argumente an Aggregationsfunktionen übergeben.
- Sie können eine Aggregationsfunktion enthalten, die einen skalaren valuezurückgibt. Zum Beispiel
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Tabelle filter Ausdruck
Ein Tabellenausdruck filter wendet ein Tabellenobjekt als filteran. Es könnte ein Verweis auf eine Modelltabelle sein, aber wahrscheinlicher ist es eine Funktion, die ein Tabellenobjekt zurückgibt. Sie können die FILTER-Funktion verwenden, um komplexe filter Bedingungen anzuwenden, einschließlich derer, die nicht durch einen booleschen filter Ausdruck definiert werden können.
Filter Modifiziererfunktionen
Filter Modifiziererfunktionen ermöglichen es Ihnen, mehr zu tun, als einfach filtershinzuzufügen. Sie bieten Ihnen zusätzliche Kontrolle beim Ändern filter Kontexts.
Funktion | Zweck |
---|---|
REMOVEFILTERS | Entfernen Sie allfilters, orfilters aus einer or mehreren Spalten einer Tabelle, or aus all Spalten einer einzelnen Tabelle. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Entfernen Sie filters aus einer or weiteren Spalten, or aus all Spalten einer einzelnen Tabelle. |
KEEPFILTERS | Fügen Sie filter hinzu, ohne vorhandene filters in denselben Spalten zu entfernen. |
USERELATIONSHIP | Binden Sie eine inaktive Beziehung zwischen related Spalten ein, in diesem Fall wird die aktive Beziehung automatisch inaktiv. |
CROSSFILTER | Ändern sie filter Richtung (von beiden in einzelne, or von single zu both), or eine Beziehung zu deaktivieren. |
1 Die ALL Funktion and ihre Varianten verhalten sich als filter Modifizierer and als Funktionen, die Tabellenobjekte zurückgeben. If die REMOVEFILTERS-Funktion von Ihrem Tool unterstützt wird, empfiehlt es sich, sie zu verwenden, um filterszu entfernen.
value zurückgeben
Die value, die das Ergebnis des Ausdrucks ist.
Bemerkungen
Wenn filter Ausdrücke bereitgestellt werden, ändert die CALCULATE-Funktion den filter Kontext so, dass er den Ausdruck evaluate. Für jeden filter Ausdruck gibt es zwei mögliche Standardergebnisse, wenn der filter Ausdruck in die not-Funktion eingeschlossen KEEPFILTERS wird:
- If die Spalten (or Tabellen) nicht im filter Kontext enthalten sind, werden dem filters Kontext neue filter hinzugefügt, um den Ausdruck zu evaluate.
- If die Spalten (or Tabellen) sich bereits im filter Kontext befinden, wird die vorhandene filters vom neuen filters überschrieben, um den evaluate Ausdruck zu CALCULATE.
Die CALCULATE Funktion, die verwendet wird, ohne dass filters eine bestimmte Anforderung erfüllt. Er übergibt den Zeilenkontext in filter Kontext. Es ist erforderlich, wenn ein Ausdruck (not ein Modell measure), das Modelldaten zusammenfasst, im Zeilenkontext ausgewertet werden muss. Dieses Szenario kann in einer berechneten Spaltenformel or auftreten, wenn ein Ausdruck in einer Iteratorfunktion ausgewertet wird. Beachten Sie, dass der Kontextübergang automatisch erfolgt, wenn ein Modell measure im Zeilenkontext verwendet wird.
Diese Funktion wird not für die Verwendung im DirectQuery-Modus unterstützt, wenn sie in berechneten Spalten or Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.
Beispiele
Die folgende Tabelle "Sales" measure Definition erzeugt ein Umsatzergebnis, jedoch nur für Produkte, die die Farbe Blau aufweisen.
Beispiele in diesem Artikel können mit dem sample Adventure Works DW 2020 Power BI-Desktopmodell verwendet werden. Informationen zum Abrufen des Modells finden Sie unter DAXsample Modell.
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 sum der Tabelle Sales tabelle Spalte "Sales Amount" in einem geänderten filter Kontext aus. Eine neue filter wird der Product Tabelle Spalte "Color" hinzugefügt–orüberschreibt die filter alle filter, die bereits auf die Spalte angewendet wurden.
Die folgende Tabelle "Sales" measure Definition erzeugt ein Verhältnis zwischen Umsatz und Umsatz für all 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 SalesSales Amount Spalte value (im filter Kontext) durch denselben Ausdruck in einem geänderten filter Kontext addiert. Es ist die CALCULATE-Funktion, die den filter Kontext mithilfe der REMOVEFILTERS-Funktion ändert, bei der es sich um eine filter Modifiziererfunktion handelt. Sie entfernt
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 filter Kontext konvertiert. Es wird als Kontextübergangbezeichnet. Die ALLEXCEPT-Funktion entfernt filters aus all Tabellenspalten except der Spalte CustomerKey.
Related Inhalte
Filter KontextZeilenkontextCALCULATETABLE FunktionFilter Funktionen