Freigeben über


CALCULATETABLE

Gilt für:Berechnete SpalteBerechnete TabelleMeasurevisuelle Berechnung

Wertet einen Tabellenausdruck in einem geänderten Filterkontext aus.

Anmerkung

Es gibt auch die CALCULATE Funktion. Es führt genau dieselbe Funktionalität aus, mit der Ausnahme, dass der Filterkontext auf einen Ausdruck angewendet wird, der einen skalaren Wertzurückgibt.

Syntax

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

Parameter

Ausdruck Definition
expression Der tabellenausdruck, der ausgewertet werden soll.
filter1, filter2,… (Optional) Boolesche Ausdrücke oder Tabellenausdrücke, die Filter oder Filtermodifiziererfunktionen definieren.

Der Ausdruck, der als erster Parameter verwendet wird, muss eine Modelltabelle oder eine Funktion sein, die eine Tabelle zurückgibt.

Filter können folgendes sein:

  • Boolesche Filterausdrücke
  • Tabellenfilterausdrücke
  • Filteränderungsfunktionen

Wenn mehrere Filter vorhanden sind, werden sie mithilfe des ANDlogischen Operatorsausgewertet. Das bedeutet, dass alle Bedingungen gleichzeitig TRUE werden müssen.

Boolesche Filterausdrücke

Ein boolescher Ausdrucksfilter ist ein Ausdruck, der zu TRUE oder FALSEausgewertet wird. Es gibt mehrere Regeln, die sie einhalten müssen:

  • Sie können nur auf eine einzelne Spalte 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.

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

Eine Tabelle mit Werten.

Bemerkungen

  • Wenn Filterausdrücke bereitgestellt werden, ändert die CALCULATETABLE-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 CALCULATETABLE Ausdruck auszuwerten.
  • 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.

Beispiel

Im folgenden Beispiel wird die funktion CALCULATETABLE verwendet, um die Summe des Internetumsatzes für 2006 abzurufen. Dieser Wert wird später verwendet, um das Verhältnis der Internetverkäufe im Vergleich zu allen Verkäufen für das Jahr 2006 zu berechnen.

Die folgende Formel:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)

Dies führt zu der folgenden Tabelle:

Zeilenbeschriftungen Internet-SalesAmount_USD CalculateTable 2006 Internet Sales Verhältnis zwischen Internetumsatz und 2006
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
Gesamtsumme $26.054.827,45 $5,681,440,58 4.59