Verständnis von Zeilen- und Filterkontext
Swipe um das Menü anzuzeigen
Jede DAX-Berechnung läuft innerhalb eines Kontexts – einer Definition, welche Zeilen zum Zeitpunkt der Auswertung relevant sind. Ohne das Verständnis des Kontexts ist es unmöglich vorherzusagen, welchen Wert eine Measure zurückgibt oder zu diagnostizieren, warum sie einen falschen Wert liefert.
Zeilenkontext
Zeilenkontext ist der Kontext, der innerhalb einer berechneten Spalte existiert. Wenn Power Pivot eine berechnete Spalte auswertet, verarbeitet es jede Zeile einzeln – DAX weiß genau, in welcher Zeile es sich befindet, und verwendet nur die Werte aus dieser Zeile für die Berechnung.
Was ist das? Das Bewusstsein für die aktuelle Zeile. Die Formel kann auf jede Spalte in derselben Tabelle zugreifen und erhält den Wert für genau diese Zeile – nicht eine Summe oder einen Durchschnitt, sondern den exakten Zellwert.
Zeilenkontext existiert nicht für Measures. Wenn eine Measure ausgewertet wird, gibt es keine aktuelle Zeile – nur eine Menge aktiver Filter. Deshalb führt das Schreiben eines zeilenbezogenen Labels als Measure zu einem Fehler: Die Measure hat keine Zeile, auf die sie sich beziehen kann.
Filterkontext
Filterkontext ist der Kontext, der existiert, wenn eine Measure ausgewertet wird. Es ist die vollständige Menge aller aktiven Filter im Datenmodell zum Zeitpunkt der Berechnung der Measure – bestimmt durch alles, was die Pivot-Tabelle aktuell über diese spezifische Zelle weiß.
Jede Zelle in einer Pivot-Tabelle hat ihre eigene, einzigartige Kombination aktiver Filter.
Eine leere Zelle weist nicht auf einen Fehler hin – sie bedeutet, dass der Filterkontext für diese Zelle keine übereinstimmenden Zeilen zurückgibt. Unter der aktuellen Kombination aktiver Filter gibt es einfach keine Daten.
Die vier Quellen des Filterkontexts
Der Filterkontext ergibt sich gleichzeitig aus vier unabhängigen Quellen. Jede einzelne schränkt den Datensatz weiter ein:
- Zeilenbeschriftungen: Jeder Wert im Zeilenbereich wendet einen Filter auf seine Zeile an. Region = North und Region = South erzeugen unterschiedliche Filterkontexte – jede Zelle in der Zeile North sieht nur North-Verkäufe;
- Spaltenbeschriftungen: Jeder Wert im Spaltenbereich fügt eine zweite Filterdimension hinzu. In Kombination mit den Zeilenbeschriftungen befindet sich jede Zelle nun am Schnittpunkt von zwei unabhängigen Filtern;
- Slicer: Eine Auswahl im Slicer wendet ihren Filter gleichzeitig auf jede Zelle in der Pivot-Tabelle an. Die Auswahl von January in einem Monatsslicer beschränkt alle Zellen auf Daten aus January, unabhängig von ihrer Zeilen- oder Spaltenposition;
- Pivot-Tabellen-Filter: Direkt im Filterbereich der Pivot-Tabelle angewendete Filter tragen ebenfalls zum Filterkontext jeder Zelle bei und stapeln sich auf bereits aktive Zeilen-, Spalten- und Slicer-Filter.
Aufgabe
Schritt 1 — Experiment zum Zeilenkontext
-
Arbeitsmappe öffnen. Gehe zu Power Pivot → Verwalten → Datenansicht → Sales Tab.
-
Sieh dir die berechnete Spalte Order Size an. Sie enthält für jede Zeile entweder Large oder Small, basierend auf dem Quantity-Wert in dieser Zeile.
-
Füge nun eine zweite berechnete Spalte zur Sales-Tabelle mit folgender Formel hinzu:
= Sales[Quantity] * Sales[UnitPrice]
-
Benenne sie in
Row Revenueum. -
Scrolle durch die Spalte und bestätige, dass jede Zeile einen anderen Wert anzeigt, nämlich das Produkt aus Quantity und UnitPrice der jeweiligen Zeile.
Schritt 2 — Beantworte anschließend folgende Fragen
- Welcher Kontexttyp wird verwendet, wenn DAX Row Revenue für jede Zeile berechnet?
- Ist Row Revenue identisch mit der bereits in der Sales-Tabelle vorhandenen Spalte Total?
- Würde es Sinn ergeben, Row Revenue als Measure statt als berechnete Spalte zu erstellen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen