CALCULATETABLE
Gilt für:berechnete Spaltenberechnete TabellenMeasuresvisuelle Berechnungen
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 |