Freigeben über


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 TRUEorFALSEausgewertet 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 aus der Tabelle Kanal 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 filter Kontext konvertiert. Es wird als Kontextübergangbezeichnet. Die ALLEXCEPT-Funktion entfernt filters aus all Tabellenspalten except der Spalte CustomerKey.

Filter KontextZeilenkontextCALCULATETABLE FunktionFilter Funktionen