Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Power Pivot CALCULATE() Verständnisproblem
#1
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?

   

Vielen Dank, Redoute


Angehängte Dateien
.xlsx   PPCountRows.xlsx (Größe: 177,65 KB / Downloads: 0)
Antworten Top
#2
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste