In diesem Abschnitt wird beschrieben, wie Sie Filter in DAX-Formeln (Data Analysis Expressions) erstellen. Sie können Filter in Formeln erstellen, um die Werte aus den Quelldaten einzuschränken, die in Berechnungen verwendet werden. Dazu geben Sie eine Tabelle als Eingabe für die Formel an und definieren dann einen Filterausdruck. Der von Ihnen bereitgestellte Filterausdruck wird verwendet, um die Daten abzufragen und nur eine Teilmenge der Quelldaten zurückzugeben. Der Filter wird dynamisch jedes Mal angewendet, wenn Sie die Ergebnisse der Formel aktualisieren, abhängig vom aktuellen Kontext Ihrer Daten.
Inhalt dieses Artikels
Erstellen eines Filters für eine Tabelle in einer Formel
Sie können Filter in Formeln anwenden, die eine Tabelle als Eingabe verwenden. Anstatt einen Tabellennamen einzugeben, verwenden Sie die FILTER-Funktion, um eine Teilmenge von Zeilen aus der angegebenen Tabelle zu definieren. Diese Teilmenge wird dann an eine andere Funktion übergeben, für Vorgänge wie benutzerdefinierte Aggregationen.
Angenommen, Sie verfügen über eine Tabelle mit Daten, die Bestellinformationen zu Handelspartnern enthält, und Sie möchten berechnen, wie viel jeder Handelspartner verkauft hat. Sie möchten den Verkaufsbetrag jedoch nur für die Wiederverkäufer anzeigen, die mehrere Einheiten Ihrer höherwertigen Produkte verkauft haben. Die folgende Formel, die auf der DAX-Beispielarbeitsmappe basiert, zeigt ein Beispiel dafür, wie Sie diese Berechnung mithilfe eines Filters erstellen können:
=SUMME(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Quantity] > 5 &&
'ResellerSales_USD'[ProductStandardCost_USD] > 100),
'ResellerSales_USD'[SalesAmt]
)
Der erste Teil der Formel gibt eine der Power Pivot-Aggregationsfunktionen an, die eine Tabelle als Argument verwendet. SUMMX berechnet eine Summe über eine Tabelle.
Im zweiten Teil der Formel
FILTER(table, expression),wird angegebenSUMX, welche Daten verwendet werden sollen.SUMXErfordert eine Tabelle oder einen Ausdruck, der zu einer Tabelle führt. Anstatt alle Daten in einer Tabelle zu verwenden, verwenden Sie dieFILTERFunktion, um anzugeben, welche Zeilen aus der Tabelle verwendet werden.
Der Filterausdruck besteht aus zwei Teilen: Der erste Teil benennt die Tabelle, auf die der Filter angewendet wird. Im zweiten Teil wird ein Ausdruck definiert, der als Filterbedingung verwendet werden soll. In diesem Fall filtern Sie nach Wiederverkäufern, die mehr als 5 Einheiten verkauft haben, und nach Produkten, die mehr als 100 $ kosten. Der Operator && ist ein logischer UND-Operator, der angibt, dass beide Teile der Bedingung erfüllt sein müssen, damit die Zeile zur gefilterten Teilmenge gehört.Der dritte Teil der Formel teilt der
SUMXFunktion mit, welche Werte addiert werden sollen. In diesem Fall verwenden Sie nur den Umsatzbetrag.
Beachten Sie, dass Funktionen wie FILTER, die eine Tabelle zurückgeben, die Tabelle oder Zeilen niemals direkt zurückgeben, sondern immer in eine andere Funktion eingebettet sind. Weitere Informationen zu FILTER und anderen Funktionen zum Filtern, einschließlich weiterer Beispiele, finden Sie unter Filterfunktionen (DAX).Hinweis
Der Filterausdruck wird durch den Kontext beeinflusst, in dem er verwendet wird. Wenn Sie beispielsweise einen Filter in einem Measure verwenden und das Measure in einer PivotTable oder einem PivotChart verwendet wird, kann die Teilmenge der zurückgegebenen Daten von zusätzlichen Filtern oder Datenschnitten beeinflusst werden, die der Benutzer in der PivotTable angewendet hat. Weitere Informationen zum Kontext finden Sie unter Kontext in DAX-Formeln.
Filter, die Duplikate entfernen
Zusätzlich zum Filtern nach bestimmten Werten können Sie eine eindeutige Gruppe von Werten aus einer anderen Tabelle oder Spalte zurückgeben. Dies kann hilfreich sein, wenn Sie die Anzahl eindeutiger Werte in einer Spalte zählen oder eine Liste eindeutiger Werte für andere Operationen verwenden möchten. DAX stellt zwei Funktionen für die Rückgabe unterschiedlicher Werte bereit: die DITINCT-Funktion und die VALUES-Funktion.
- Die DISTINCT-Funktion untersucht eine einzelne Spalte, die Sie als Argument für die Funktion angeben, und gibt eine neue Spalte zurück, die nur die unterschiedlichen Werte enthält.
- Die VALUES-Funktion gibt ebenfalls eine Liste eindeutiger Werte zurück, aber auch das Element "Unknown". Dies ist nützlich, wenn Sie Werte aus zwei Tabellen verwenden, die durch eine Beziehung verknüpft sind, und ein Wert in einer Tabelle fehlt, aber in der anderen vorhanden ist. Weitere Informationen zum Element "Unknown" finden Sie unter Kontext in DAX-Formeln.
Beide Funktionen geben eine ganze Spalte mit Werten zurück. Daher verwenden Sie die Funktionen, um eine Liste von Werten abzurufen, die dann an eine andere Funktion übergeben wird. Sie können z. B. die folgende Formel verwenden, um eine Liste der verschiedenen Produkte abzurufen, die von einem bestimmten Händler verkauft werden, indem Sie den eindeutigen Product Key verwenden. Anschließend zählen die Produkte in dieser Liste mithilfe der Funktion ZÄHLENZEILEN:
=ANZAHLZEILEN(VERSCHIEDEN('ResellerSales_USD'[Produktschlüssel]))
Wie der Kontext Filter beeinflusst
Wenn Sie eine DAX-Formel zu einer PivotTable oder einem PivotChart hinzufügen, kann der Kontext auf die Ergebnisse der Formel reagieren. Wenn Sie in einer Power Pivot-Tabelle arbeiten, besteht der Kontext aus der aktuellen Zeile und ihren Werten. Wenn Sie in einer PivotTable oder einem PivotChart arbeiten, bedeutet Kontext die Menge oder Teilmenge von Daten, die durch Vorgänge wie Aufteilen oder Filtern definiert wird. Auch der Entwurf der PivotTable oder des PivotCharts zwingt einen eigenen Kontext auf. Wenn Sie beispielsweise eine PivotTable erstellen, die den Umsatz nach Region und Jahr gruppiert, werden nur die Daten angezeigt, die für diese Regionen und Jahre gelten. Daher werden alle Kennzahlen, die Sie der PivotTable hinzufügen, im Kontext der Spalten- und Zeilenüberschriften zuzüglich etwaiger Filter in der Kennzahlformel berechnet.
Weitere Informationen finden Sie unter Kontext in DAX-Formeln.
Entfernen von Filtern
Wenn Sie mit komplexen Formeln arbeiten, möchten Sie möglicherweise genau wissen, was die aktuellen Filter sind, oder Sie möchten den Filterteil der Formel ändern. DAX stellt mehrere Funktionen bereit, mit denen Sie Filter entfernen und steuern können, welche Spalten als Teil des aktuellen Filterkontexts beibehalten werden. Dieser Abschnitt enthält eine Übersicht darüber, wie sich diese Funktionen auf die Ergebnisse in einer Formel auswirken.
Überschreiben aller Filter mit der Funktion ALL
Sie können die ALL Funktion verwenden, um alle zuvor angewendeten Filter außer Kraft zu setzen und alle Zeilen in der Tabelle an die Funktion zurückzugeben, die das Aggregat oder eine andere Operation ausführt. Wenn Sie eine oder mehrere Spalten anstelle einer Tabelle als Argumente für ALLverwenden, gibt die ALL Funktion alle Zeilen zurück, wobei alle Kontextfilter ignoriert werden.
Hinweis
Wenn Sie mit der Terminologie einer relationalen Datenbank vertraut sind, können Sie sich ALL vorstellen, dass die natürliche linke äußere Verknüpfung aller Tabellen generiert wird.
Angenommen, Sie verfügen über die Tabellen "Umsatz" und "Artikel", und Sie möchten eine Formel erstellen, die die Umsatzsumme für das aktuelle Produkt dividiert durch die Umsätze für alle Artikel berechnet. Sie müssen berücksichtigen, dass der Benutzer der PivotTable, wenn die Formel in einem Measure verwendet wird, möglicherweise einen Datenschnitt verwendet, um nach einem bestimmten Produkt zu filtern, wobei der Produktname in den Zeilen steht. Um den wahren Wert des Nenners unabhängig von Filtern oder Datenschnitten zu erhalten, müssen Sie daher die ALL-Funktion hinzufügen, um alle Filter außer Kraft zu setzen. Die folgende Formel ist ein Beispiel dafür, wie Sie ALLE verwenden, um die Auswirkungen vorheriger Filter außer Kraft zu setzen:
=SUMME (Umsatz[Betrag])/SUMMEX(Umsatz[Betrag], FILTER(Umsatz; ALLE(Produkte)))
- Der erste Teil der Formel, SUMME (Umsatz[Betrag]), berechnet den Zähler.
- Die Summe berücksichtigt den aktuellen Kontext. Wenn Sie die Formel in eine berechnete Spalte hinzufügen, wird der Zeilenkontext angewendet, und wenn Sie die Formel als Measure zu einer PivotTable hinzufügen, werden alle in der PivotTable (dem Filterkontext) angewendeten Filter angewendet.
- Der zweite Teil der Formel berechnet den Nenner. Die Funktion ALL überschreibt alle Filter, die möglicherweise auf die
ProductsTabelle angewendet werden.
Weitere Informationen, einschließlich detaillierter Beispiele, finden Sie unter ALL-Funktion.
Überschreiben bestimmter Filter mit der Funktion ALLEXCEPT
Die Funktion ALLEXCEPT überschreibt ebenfalls vorhandene Filter, Sie können jedoch festlegen, dass einige der vorhandenen Filter beibehalten werden sollen. Die Spalten, die Sie als Argumente für die Funktion ALLEXCEPT benennen, geben an, welche Spalten weiterhin gefiltert werden. Wenn Sie die Filter aus den meisten, aber nicht aus allen Spalten außer Kraft setzen möchten, ist ALLEXCEPT bequemer als ALL. Die ALLAUSNAHME-Funktion ist besonders nützlich, wenn Sie PivotTables erstellen, für die nach vielen verschiedenen Spalten gefiltert werden kann, und Sie die in der Formel verwendeten Werte steuern möchten. Weitere Informationen, einschließlich eines detaillierten Beispiels für die Verwendung von ALLEXCEPT in einer PivotTable, finden Sie unter ALLEXCEPT Funktion.