CALCULATETABLE

Hiermit wird ein Tabellenausdruck in einem bearbeiteten Filterkontext ausgewertet.

Hinweis

Es gibt auch die Funktion CALCULATE. Die Funktionalität ist identisch, hierbei wird jedoch der Filterkontext bearbeitet, der auf einen Ausdruck angewendet wird, der einen Skalarwert zurückgibt.

Syntax

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

Parameter

Begriff Definition
expression Dies ist der auszuwertende Tabellenausdruck.
filter1, filter2,… Optional: Boolesche Ausdrücke oder Tabellenausdrücke, die Filter definieren, oder Filtermodifiziererfunktionen.

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

Filter können Folgendes sein:

  • Boolesche Filterausdrücke
  • Tabellenfilterausdrücke
  • Filtermodifiziererfunktionen

Wenn es mehrere Filter gibt, werden sie mithilfe des logischen AND-Operators ausgewertet. Das bedeutet, für alle Bedingungen muss zur selben Zeit TRUE gelten.

Boolesche Filterausdrücke

Ein boolescher Ausdrucksfilter ist ein Ausdruck, der mit TRUE oder FALSE ausgewertet wird. Es gibt mehrere Regeln, die befolgt werden müssen:

  • Sie können nur auf eine einzelne Spalte verweisen.
  • Sie können nicht auf Measures verweisen.
  • Sie dürfen keine geschachtelte CALCULATE-Funktion verwenden.

Ab dem im September 2021 veröffentlichten Release von Power BI Desktop gelten außerdem folgende Regeln:

  • Sie können nur dann Funktionen zum Überprüfen oder Zurückgeben einer Tabelle verwenden, wenn sie als Argumente an Aggregationsfunktionen übergeben werden.
  • Sie können eine Aggregationsfunktion enthalten, die einen Skalarwert zurückgibt.

Tabellenfilterausdruck

Ein Tabellenausdrucksfilter wendet ein Tabellenobjekt als Filter an. Dabei könnte es sich um einen Verweis auf eine Modelltabelle handeln, wahrscheinlicher handelt es sich jedoch um eine Funktion, die ein Tabellenobjekt zurückgibt. Sie können die FILTER-Funktion verwenden, um komplexe Filterbedingungen anzuwenden, einschließlich derjenigen, die von booleschen Filterausdrücken nicht definiert werden können.

Filtermodifiziererfunktionen

Filtermodifiziererfunktionen bieten Ihnen mehr Funktionalität als einfach nur das Hinzufügen von Filtern. Sie bieten Ihnen zusätzliche Steuerungsmöglichkeiten, wenn Filterkontexte bearbeitet werden.

Funktion Zweck
REMOVEFILTERS Hiermit werden alle Filter entfernt, oder Filter aus einer oder mehreren Spalten einer Tabelle, oder aus allen Spalten einer einzelnen Tabelle.
ALL1, ALLEXCEPT, ALLNOBLANKROW Hiermit werden Filter aus einer oder mehreren Spalten entfernt, oder aus allen Spalten einer einzelnen Tabelle.
KEEPFILTERS Hiermit wird ein Filter hinzugefügt, ohne dass vorhandene Filter derselben Spalten entfernt werden.
USERELATIONSHIP Hiermit wird eine inaktive Beziehung zwischen verknüpften Spalten hergestellt. In diesem Fall wird die aktive Beziehung automatisch inaktiv.
CROSSFILTER Hiermit wird die Filterrichtung geändert (von beide in einzeln oder von einzeln in beide), oder eine Beziehung wird deaktiviert.

1 Die ALL-Funktion und ihre Varianten verhalten sich sowohl wie Filtermodifizierer als auch wie Funktionen, die Tabellenobjekte zurückgeben. Wenn die REMOVEFILTERS-Funktion von Ihrem Tool unterstützt wird, sollten Sie eher diese verwenden, um Filter zu entfernen.

Rückgabewert

Eine Tabelle mit Werten.

Bemerkungen

  • Wenn Filterausdrücke bereitgestellt werden, bearbeitet 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 KEEPFILTERS-Funktion eingeschlossen ist:

    • Wenn sich die Spalten (oder Tabellen) nicht im Filterkontext befinden, werden dem Filterkontext neue Filter hinzugefügt, um den Ausdruck auszuwerten.
    • Wenn die Spalten (oder Tabellen) sich bereits im Filterkontext befinden, werden die vorhandenen Filter durch die neuen Filter überschrieben, um den CALCULATETABLE-Ausdruck auszuwerten.
  • Die Verwendung dieser Funktion im DirectQuery-Modus wird nicht unterstützt, wenn sie in berechneten Spalten oder RLS-Regeln (Row-Level Security) eingesetzt wird.

Beispiel

Das folgende Beispiel verwendet die CALCULATETABLE-Funktion, um die Summe der Internetumsätze 2006 zu erhalten. Dieser Wert wird später verwendet, um das Verhältnis des Internetumsatzes zum Gesamtumsatz des Jahres 2006 zu berechnen.

Die folgende Formel:

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

Dies führt zu der folgenden Tabelle:

Row Labels Internet SalesAmount_USD CalculateTable 2006 Internet Sales Verhältnis des Internetumsatzes zu 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
Grand Total 26.054.827,45 USD $ 5.681.440,58 4.59