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 FALSE
ausgewertet 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 |