PowerPivot _Datenmodell
#21
Erstmal ein Fettes DANKE an euch beide für die vielen Gedanken die ihr euch dazu macht.

Dann: Tatsächlich hab ich in meiner Aufgabenstellung einen Fehler gehabt. Sorry 


Am Beispiel von Andreas: 

Wollte ich die 
- Kunden aus der Kundentabelle in die Werte ziehen 
- und die Verkäufe in die Zeilen. 

und da kommt eben immer nur 3 raus - und das versteh ich eben nicht das müsste doch "zuordenbar" sein

Grüße Jack
Antworten Top
#22
Das von mir definierte Measure macht genau das was ich erwarte und wie ich es benannt habe, nämlich "Eindeutige Kunden pro Artikel" liefern, oder 
Zitat:Zuerst wird wie bei Anzahl erstmal alles gefiltert was zu dem Ort gehört, dann werden die Duplikate entfernt und dann wird gezählt.
Oder mit anderen Worten, wie viele Kunden gibt es z.B.in Leipzig, die den Artikel Mütze bestellen, unabhängig wie oft oder wie viel. Da liefert "mein" Measure den Wert 2. So habe ich den OP anhand der mangelhaften Beispieldaten verstanden.

Zu 
Zitat:Wenn Du Dir mal mein Datei anschaust und das machst (oder ein Measure hinzufügst), dann ist das Ergebnis überall 1! Und das ist ganz klar nicht das gewünschte Ergebnis.
kann ich nur sagen: Wenn ich "mein" Measure richtig einfüge, funktioniert es wie erwartet und das Ergebnis ist nicht überall 1. Was das gewünschte Ergebnis ist, kann ich nicht sagen, das weiß nur der OP und der konnte es bisher nicht formulieren bzw. ich habe es nicht verstanden und daher habe ich dazu Annahmen getroffen


@OP: Berichte nicht, welche Felder Du wohin ziehst und das Ergebnis nicht verstehst. Formuliere Deine Anforderung. Darüber musst Du Dir klar werden. Und stelle eine vernünftige Beispieldatei ein!


.xlsx   Mappe1 (8).xlsx (Größe: 190,22 KB / Downloads: 9)
Antworten Top
#23
(28.11.2025, 10:39)Jack_d schrieb: und da kommt eben immer nur 3 raus - und das versteh ich eben nicht das müsste doch "zuordenbar" sein

Nee, eben nicht.

Nimm Dir mal die Datei die  Warkings gemacht hat, da ist alles drin um zu verstehen warum das so nicht geht wie Du denkst.

Fangen wir mal bei der Beziehung an, die linke Tabelle ist die "dimension table", die 1-Seite, diese hat eindeutige Werte. Die rechte Tabelle ist die "fact table", die n-Seite und enthält mehrfach vorkommende Werte. Die "1" Seite kann über die Kunden die "n" Seite filtern, aber nicht anders herum. Wenn Du das probierst bekommst Du die Fehler / Warnungen die Du beschrieben hast.

(Der Vollständigkeit halber: Es gibt Situationen wo beide Tabellen eindeutig sind, also quasi eine 1:1 Beziehung möglich ist. In Excel geht das nicht und auch hier muss die Beziehung genau so gesetzt werden, sonst gibt es Fehler / Warnungen / falsche Ergebnisse. Beim Setzen einer Beziehung IMMER die n-Seite auf die 1-Seite ziehen!

Wenn man die Beziehung gesetzt hat, dann blendet man am besten die "n" Seite aus (rechts-klick und "In Clienttools ausblenden"), dann hat man sich selber schon mal vor den dümmsten Fehlern geschützt).

Fangen wir mal mit meiner PT an, diese kommt ohne ein Measure aus. Warum?

In den Werten ist das Feld "Artikel" und in den Zeilen auch, also alles nur aus einer Tabelle wie in einer "normalen" PT, da kann man alles hinziehen wohin man will. Die 1-Seite kann die n-Seite filtern, daher kann ich den "Ort" in die Spalten ziehen ohne das ich Probleme kriege. (Das geht auch mit "Kunde" aus der 1-Seite, mit "Kunde" aus der n-Seite nicht, deshalb habe ich das Feld ausgeblendet.)

Wenn ich nun "Kunde" in die Werte ziehe rechnet die PT "falsch" und Excel gibt eine Fehlermeldung / Warnung aus. Ist ggf. etwas verwirrend, aber wie kommen diese Zahlen zustande? Also in den Zeilen sind die Artikel aus der n-Seite und hier erscheint jeder Artikel genau einmal. Das heißt zuerst wird die n-Seite gefiltert das ich nur eindeutige Werte sehe, alles andere ist weg, sprich in der Tabelle Verkäufe ist nun nur noch 1x Schuhe und 1x Mütze und 1x Schal und 1x Spitzenhöschen! Jetzt holt sich die n-Seite je Zeile jeweils die komplette Tabelle Kunden und nun werden je Zeile die Anzahl der Orte gezählt. Daher haben wir in jeder Zeile 2x Leipzig und 1x Kassel.

Warum geht das mit dem Measure in der 2ten PT?

Nun, genau genommen geht es nicht... denn das Measure benutzt NICHT das Feld Kunde von der 1-Seite. Würden wir das tun und es zu
=COUNTROWS ( DISTINCT (Kunden[Kunde]))
ändern, dann würden wir die gleichen falschen Ergebnisse bekommen, aber keine Fehlermeldung/Warnung mehr von Excel!

Was macht also nun das Measure:
=COUNTROWS ( DISTINCT ('Verkäufe'[Kunde]))

Ganz einfach: Die Anordnung der Felder ist wie in der ersten PT, d.h. die PT kann problemlos die Anzahl der Artikel zählen, weil die Tabellen / Datenmodell entsprechend gefiltert sind. Das Measure nimmt jetzt nicht das Feld Artikel, sondern das Feld Kunde, filtert darüber die Daten eindeutig und zählt nun die ZEILEN, nicht die Kunden!

Auch das geht ohne ein Measure: Blende das Feld Kunde der Tabelle "Verkäufe" ein, ziehe dieses in die Werte und ändere die Auswertung auf "Diskrete Anzahl".

BTW, das Measure läßt sich vereinfachen:
=DISTINCTCOUNT('Verkäufe'[Kunde])

Ein Datenmodell ist keine Eier-legende-Woll-Milch-Sau, man muss schon genau wissen was man da macht, sonst kommt am Ende Blödsinn dabei raus.

Andreas.
[-] Folgende(r) 1 Nutzer sagt Danke an Andreas Killer für diesen Beitrag:
  • Ralf A
Antworten Top
#24
Hallo Andreas, 

vielen Dank für deine Ausführungen. Die ich -technisch / inhaltlich - grundlegend Verstehe. 

Ich habe nur Probleme damit das 1:n Modell zu greifen. Für mich ist das wie ein Strick zwischen 

1 und n1 
1 und n2
1 und n3

Und wenn ich dann an zB "n2" "Ziehe" dann erwarte ich das mir das jeweilige"1" rausgezogen wird. 
Und wenn ich mehrere N2 an verschiedenen "1en" habe, dass es mir dann die jeweilige Anzahl "zieht" 

Das funktioniert ja aber nicht, wie ich lerne =)

Grüße Jack
Antworten Top
#25
(01.12.2025, 12:29)Jack_d schrieb: Und wenn ich dann an zB "n2" "Ziehe" dann erwarte ich das mir das jeweilige"1" rausgezogen wird. 
Und wenn ich mehrere N2 an verschiedenen "1en" habe, dass es mir dann die jeweilige Anzahl "zieht" 
Naja, ich denke Du denkst immer noch in Formeln ala SVERWEIS...

Du hast keine 1:N1, 1:N2 sondern nur eine 1:N die für alle gilt. Die Denkweise ist FILTER (alle Daten), nicht SVERWEIS (zieh Dir ein Teil das Daten).

Ziehe ich ein Feld in einer PT in Zeilen oder Spalten, dann wirkt das wie ein Filter. Setze ich einen Datenschnitt, dann ist das auch ein Filter. Ebenso eine Beziehung im Datenmodell ist ein Filter, wobei hier die 1-Seite alle n der anderen Seite zieht. Andersherum zieht die n-Seite ALLE 1-Seiten.

Die "dazugehörigen" kriegst Du in einem Datenmodell auch, allerdings ist das einen Zeilenkontext, kein Filterkontext. Mach mal das Datenmodell auf und dann machst Du in die Tabelle Verkäufe eine Spalte hinzu mit der Formel =RELATED(Kunden[Ort])

So bekomme ich den passenden Ort, der ja pro Kunde eindeutig ist. Wenn Du nun mal in der 2te PT die berechnete Spalte in die Werte ziehst und  das Measure entfernst, dann ist der Ergebnis identisch mit der 1te PT.

Zeilenkontext kann man machen, ist aber deutlich langsamer als Filterkontext, weil der muss ja immer auf alle Zeilen angewendet werden, was bei richtig vielen Daten zum Tragen kommt.

Andreas.
[-] Folgende(r) 1 Nutzer sagt Danke an Andreas Killer für diesen Beitrag:
  • Jack_d
Antworten Top
#26
Hallo Andreas, 

danke für deinen Input. 
Ich hab es probiert - allerdings bringt es mir den Fehler.

 "Die Kunden[Ort]-Spalte ist nicht vorhanden oder hat keine Beziehung zu einer Tabelle im aktuellen Kontext."

Sei es drum. Um unser aller -Zeit- Ressourcen zu sparen, werde ich es anders angehen und anerkennen 
das ich meine Schwierigkeiten mit dem Datenmodell -insbesondere bei Tabellenübergreifendem arbeiten habe. 


Ich danke für eure aller, und insbesondere deine Bemühungen!

Grüße Jack
Antworten Top
#27
Ich habe nun mal die Lösung von Warkings um meine Vorgehensweise ergänzt.

Da ich i.d.R. die Verknüpfung der Rohdaten (Kunden und Artikel)  auch als Tabelle sehen möchte, bringe ich diese mittels Table.Join direkt in Power Query zusammen. Daraus kann ich dann auch beliebig viele Pivot Tables erstellen. Für die "Diskrete Anzahl" der Kunden, muss ich dann nur bei der Erstellung der Pivot Table die Option: "Dem Datenmpdell diese Daten hinzufügen" aktivieren.

Es hat aber den großen Vorteil, dass ich die einzelnen Abfragen dem Datenmodell hinzufügen muss. Denn bei großen Datenmengen kann sich dies negativ auf die Performance auswirken.


Angehängte Dateien
.xlsx   Mappe1 - Ergänzung ws-53.xlsx (Größe: 237,25 KB / Downloads: 2)
Antworten Top
#28
(02.12.2025, 12:08)ws-53 schrieb: Da ich i.d.R. die Verknüpfung der Rohdaten (Kunden und Artikel)  auch als Tabelle sehen möchte, bringe ich diese mittels Table.Join direkt in Power Query zusammen. 

@Jack:
Hier ist die Beispieldatei mit der berechneten Spalte.

.xlsx   Mappe1 (8)(1).xlsx (Größe: 202,1 KB / Downloads: 2)

Und es gibt noch mehr Wege, Stichwort CALCULATE.

@ws-53:
Eine Query ist im Gegensatz zu einem Datenmodell a...langsam und Deine Vorgehensweise macht das Datenmodell überflüssig. Das Datenmodell wurde extra zu dem Zweck erfunden damit man Tabellen miteinander verknüpfen kann und so, nicht wie "früher" üblich, eine Menge an redundanten Daten und Tabellen geschickt ausmultiplizieren muss.

Es sei denn man hat einen Mac, auf dem geht das nur so, denn dieser kann kein Datenmodell.

Klar ist eine Megatabelle "einfach", aber auch hier gibt es dann Fragen die man nicht mehr oder nur mit extremen Aufwand beantworten kann. Mit DAX kann das alles machen... man muss jedoch wissen wie.

Als Vergleich: Ist ein bisschen wie VBA, ein aufgezeichnetes Makro ist VBA und was man als Programmierer macht ist auch VBA. Das dazwischen ganze Welten liegen erkennt man erst wenn man sich mit den Details beschäftigt hat...

Und viele Menschen wollen PQ/PT eh nicht, weil das ist aj so kompliziert und nur irgendwelche Formeln... die die meisten dann auch nicht verstehen, tja.

Andreas.
Antworten Top
#29
@Andreas: ich hatte ja geschrieben: " Da ich i.d.R. die Verknüpfung der Rohdaten (Kunden und Artikel)  auch als Tabelle sehen möchte, ...".

Auch in SAP hatte ich mir für Table-Joins immer Views angelegt, anstatt diese nur innerhalb eines ABAPs im Select zu bilden. Denn das hatte den großen Vorteil, dass ich mir die Daten auch immer mit der SE16 ansehen konnte.
Antworten Top


Gehe zu:


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