Clever-Excel-Forum

Normale Version: Power Pivot CALCULATE() Verständnisproblem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich experimentiere gerade mit Power Pivot und habe (eher versehentlich) eine neue Spalte countrows_filtered mit folgender DAX-Formel
erstellt:

Code:
=CALCULATE(COUNTROWS(Daten);Daten[filter])

Zu meiner Verblüffung wird die Anzahl je Gruppe (Spalte Gruppe) berechnet, siehe Screenshot/Datei. Bei 10 Zeilen, davon 9 mit filter=TRUE, hätte ich in 9 Zeilen das Ergebnis 9 erwartet und in einer Zeile Null/Blank.

Füge ich jedoch in der zugrunde liegenden Datentabelle eine Spalte ID ein mit Primärschlüssel, dann ergibt die Formel neunmal das Ergebnis 1 und einmal Null/Blank. Das ist für mich weder verständlich noch konsistent.

Offensichtlich habe ich was Grundlegendes nicht verstanden. Kann mir jemand Nachhilfe geben?

[attachment=23431]

Vielen Dank, Redoute
OK, ich habe gerade "Understanding Evaluation Contexts in DAX" durchgearbeitet und versuche mich an einer Erklärung. Es geht um Filterkontext und Zeilenkontext.

Die Formeln für berechnete Spalten in Power Pivot werden im Zeilenkontext und ohne Filterkontext ausgewertet.

Die Funktion =COUNTROWS(Daten) ignoriert wie alle Aggregatfunktionen ohne "X" den Zeilenkontext und ergibt daher als berechnete Spalte immer das Gesamtergebnis.

Die Funktion CALCULATE() hatte ich völlig missverstanden. Sie macht eine "context transition", wie in https://dax.guide/calculate/ beschrieben. Das heißt, die Werte des Zeilenkontext werden zum Filterkontext. Der Parameter Daten[Filter] ändert dann den Filter dieser einen Spalte auf True, während die Filter auf die anderen Spalten bleiben. Das heißt:

In Daten1, Gruppe 1 ist der resultierende  Filterkontext jeweils Gruppe 1, Filter True (und countrows 10?), und COUNTROWS() ergibt daher 3.

In Daten2, ID 3 ist der Filterkontext ID 3, Gruppe 1, Filter True (und countrows 10?), das ergibt keine Zeilen, und COUNTROWS() ergibt Null/Blank.

Hm, als Nächstes überlege ich dann, warum ich überhaupt eine berechnete Spalte erzeugen wollte und kein Measure. Ich gebe mal der Spreadsheet-Optik von Power Pivot die Schuld. :)

Redoute