Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PQ? Power Pivot?

Forumthread: PQ? Power Pivot?

PQ? Power Pivot?
08.09.2024 22:28:12
{Boris}
Hallo zusammen,

anbei eine Datei mit 3 Blättern:

1. Datenbasis
2. Alle_Gruppen
3- Pivot

Wir befinden uns in der Modebranche. Die einzelnen Kunden (Customers) haben Orders für die Artikel aufgegeben - getrennt nach Artikel und Farbe (und auch nach Größen).
In der Pivottabelle werden - bislang - alle Bestellungen (aufgeteilt nach Gruppe, Artikelnr., Farbe, Größe und Stückzahl) je Kunde und Hauptlabel (Filter) angezeigt.

Im Blatt "Alle_Gruppen" (enthält alle eindeutigen Gruppen) wird festgehalten, wann ein Lieferant die "Gruppe" bestätigt hat. Das bedeutet, dass alle Artikel aus der Gruppe auch produziert und geliefert werden können.

Es soll jetzt eine Bestätigung erfolgen - nach Kunde und Hauptlabel - und es sollen nur alle Artikel bestätigt werden, für die der Lieferant auch bereits eine Bestätigung erteilt hat (Datum im Blatt "Alle_Gruppen" ist vorhanden) - und das zudem in dem angegebenen Zeitraum in den beiden gelben Zellen im Blatt "Alle_Gruppen".

Also: Zeige mir in der Pivotabelle alle Artikel an, die der Kunde (Pivotauswertung!B1) zu dem angegebenen Hauptlabel (Pivotauswertunfg!B2) geordert hat und die in dem Zeitraum von (Alle_Gruppen!F1) bis (Alle_Gruppen!F2) seitens des Lieferanten bestätigt wurden.

Ich vermutet, dass das mit PQ und Power-Pivot machbar ist - aber das ist noch ein recht weißer Fleck bei mir.
Alternativen nehme ich auch jederzeit gerne - allerdings NICHT eine Zusatzspalte im Blatt "Datenbasis", in der ich ne 1 oder 0 für den Zeitraum (per Fomel) ermittle, denn das ist meine bisherige "Krückenlösung" - und die möchte ich nicht, weil die Datei eh schon sehr rechenintensiv ist.

https://www.herber.de/bbs/user/172085.xlsx

Viele Grüße

Bois
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PQ? Power Pivot?
09.09.2024 09:25:35
Yal
Hallo Eifeljoi,

nun mal zur Anregung: wenn der Fragenden eindeutig sagt: "PQ ist noch ein weißer Fleck bei mir", dann sollte man eine PQ-Lösung liefern, die den Fragenden hilft, PQ zu verstehen. Alle Lego-Bausteine zusammen zu kleben und die Fugen dazwischen zu glätten, vermittelt mir das gefüll, dass es hier nur darum geht, einen "je weniger der Fragenden nachvollziehen kann, desto schlauer wirke ich" zu platzieren.

Es geht nicht nur darum, dass ein Fragenden eine Lösung hat, sondern auch dass damit sein Wissenstand wächst, sodass die nächste Frage nicht nochmal um das gleiche geht: „Gib einem Hungernden einen Fisch, und er wird einmal satt, lehre ihn Fischen, und er wird nie wieder hungern.“

Ausserdem das Zusammenpaken aller M-Code-Einzelbefehl kann nur mit einem zusätzlichen manueller Aufwand verbunden sein. Da frage ich mich: wozu?

Es geht u.a. um diese PQ-Code, der eindeutig nicht entlang der "Low Code/No Code"-Prinzipien von PQ entstanden ist:
let in

Table.Unpivot(Table.RemoveColumns(Table.SelectRows(Table.ExpandTableColumn(Table.NestedJoin(Excel.CurrentWorkbook(){
[Name="Tabelle1"]}[Content],{"Auftragsbezeichnung-Gruppe"},Table.SelectRows(Table.TransformColumnTypes(Table.ExpandTableColumn(
Table.NestedJoin(Table.RenameColumns(Table.Distinct(Table.SelectColumns(Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
{"Auftragsbezeichnung-Gruppe"})),{{"Auftragsbezeichnung-Gruppe", "Gruppen"}}),{"Gruppen"},Excel.CurrentWorkbook(){
[Name="AllGroup"]}[Content],{"Gruppen"},"S",JoinKind.LeftOuter),"S",{"Bestätigungsdatum"},{"Bestätigungsdatum"}),{
{"Bestätigungsdatum", type date}, {"Gruppen", type text}}),each [Bestätigungsdatum] >= Record.Field(Table.TransformColumnTypes(
Excel.CurrentWorkbook(){[Name="Start"]}[Content], {{"Column1", type date}}){0}, "Column1") and [Bestätigungsdatum] =
Record.Field(Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Ende"]}[Content], {{"Column1", type date}}){0}, "Column1")),
{"Gruppen"},"GefilterteZeilen",JoinKind.LeftOuter),"GefilterteZeilen",{"Bestätigungsdatum"},{"Bestätigungsdatum"}),each
[Bestätigungsdatum] > null),{"Article NO", "Description", "Label", "Supplier", "del. EX.", "Bestätigungsdatum"}),{"total pcs",
"XXXL", "XXL", "XL", "L", "M", "S", "XS", "48", "46", "44", "42", "40", "38", "36", "34", "OS"},"Attribut","Wert")


VG
Yal
Anzeige
AW: PQ? Power Pivot?
09.09.2024 11:05:29
{Boris}
Hi Yal,

ja, da hast Du sicher Recht. Werde mir das jetzt aber mal näher ansehen und schauen, was ich kapiere und was nicht ;-)

Viele Grüße

Boris
AW: PQ? Power Pivot?
09.09.2024 11:04:09
{Boris}
Hi,

danke Dir erst mal sehr! Ich schau mir jetzt mal in Ruhe an, was Du da genau gemacht hast - in der Hoffnung, es zu verstehen ;-)

Viele Grüße

Boris
Anzeige
AW: PQ? Power Pivot?
09.09.2024 14:06:29
Eifeljoi 5
Hallo

Es zu verstehen wie ich das gemacht ist, ganz neben rangig, Hauptsache ist doch es funktioniert wie gewünscht.
Führe folgende Schritte mal aus:
A) Füge im Register "Datenbasis" einen neuen Datensatz ( andere Auftragsbezeichnung-Gruppe) ein mit den dazu gehörigen Daten.
B) Aktualisiere im Register "AlleGruppen" die PQ-Tabelle und schaue ob die neue Gruppe angezeigt wird.
C) Ändere dann in Spalte "Bestätigungsdatum" nach deinen wünschen das Datum.
D) Ändere nun in Zelle E1 und E2 das Filterdatum.
E) Aktualisiere nun zum Schluss die Pivot- Tabelle und schaue hier auch es nach deinem Wunsch alles angezeigt wird.
Achtung nicht wundern wenn in der Pivot Spalten, sind keine Eintragungen im Register "Datenbasis" wie zb: Spalten: OS oder 46 oder 48 usw.
keine Eintragungen erscheinen diese auch nicht in der Pivot.
Falls etwas nicht stimmt bzw. falsch angezeigt wird bitte entsprechende Meldung und Hinweis.
Anzeige
AW: PQ? Power Pivot?
09.09.2024 17:54:34
Luschi
Hallo PQ-M-Fan's

für Alle, die wissen wollen, was in der komprimierten M-Version von 'Eifeljoi 5' so passiert, hier eine in Einzelschritte zerlegte Version.
Es gibt darin einige interessante Überlegungen, die aber für den ungeübten PQ-User wahrscheinlich Böhmische Dörfer sind.
Das aber dieser PQ-Schritt: Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content] - 3x
und dieser PQ.Schritt: Excel.CurrentWorkbook(){[Name="AllGroup"]}[Content] - 2x ausgeführt werden müssen, kann einfach nicht im Sinne der PQ-Erfinder sein.
Mir wurde von meinem Gruppenleiter C#-funktionale Programmierung eingeimpft: kurze und wiederverwendbare C#-Funktionen zu schreiben.
Doch hier wird kolossal dagegen verstoßen: wenn 1 PQ-Schritt nicht mehr erreichbar ist, wird er eben nochmal ausgeführt - was für eine unsinnige Logik.

https://www.herber.de/bbs/user/172110.xlsx

Gruß von Luschi
aus klein-Paris
Anzeige
AW: PQ? Power Pivot?
09.09.2024 15:34:48
Yal
Moin,

basierend auf die Beschreibung, wie man damit umgeht, habe ich erst den Weg, den Eifeljoi eingeschlagen hat, nachvollziehen können.

Ich schlage daher eine andere Variante (wer kritisiert, muss liefern ;-). Anders sind nur die Schritte bis zum Ergebnis, gehe aber den gleichen Weg wie mein geschätzten Kollege.

Anders ist, dass jede Element einzel in einer Abfrage eingebunden wird und dass jede Transformation in einzelnen, lesbaren Schritten aufgestellt ist.
Userbild
(Diese Ansicht ist in PQ-Editor unter "Ansicht", "Abfrageabhängigkeiten" zu haben)
Genauso nehme ich die "AllGroup" als Eingabe, die von der Datenbasis ergänzt wird. Es ist eine selbstreferierende Tabelle, die einen Nachteil hat: verschwindet eine Auftragsbezeichnung-Gruppe aus der Datenbasis, ist die entsprechende Zeile in Allgroup samt eingetragene Datum auch weg!

Das Ergebnis ("Ausg_Ergebnis") wird direkt in einer Pivottable ausgegeben. Hier eine Abweichung: es wird eine Markierung "Ist_bestätigt" (wahr/falsch) eingeführt, der im Kopfbereich der Pivot gefiltert werden muss.

Ich gehe davon aus, dass die Verarbeitung leichter zu erfassen ist und auch Anpassung selbständig gemachte werden können.
https://www.herber.de/bbs/user/172109.xlsx

VG
Yal
Anzeige
AW: PQ? Power Pivot?
09.09.2024 16:22:47
Eifeljoi 5
Hallo
Zitat:
"die einen Nachteil hat: verschwindet eine Auftragsbezeichnung-Gruppe aus der Datenbasis, ist die entsprechende Zeile in Allgroup samt eingetragene Datum auch weg!"
Dies ist kein Nachteil sondern es muss zwingend so sein, wenn nicht würden die ganzen Daten(Datum) durcheinander gewürfelt.
Viele Wege führen nach ..............
Anzeige
AW: PQ? Power Pivot?
10.09.2024 04:10:52
Eifeljoi 5
Hallo
Und nun für welche die es noch kompakter haben wollen die AuswertungsPIV so:
let in

Table.UnpivotOtherColumns(Table.SelectColumns(Table.SelectRows(Table.ExpandTableColumn(Table.NestedJoin(Excel.CurrentWorkbook()
{[Name="Tabelle1"]}[Content],{"Auftragsbezeichnung-Gruppe"},Table.SelectRows(Table.TransformColumnTypes(Excel.CurrentWorkbook()
{[Name="AllGroup"]}[Content],{{"Bestätigungsdatum",type date}}),each [Bestätigungsdatum]>=Date.From(Excel.CurrentWorkbook(){
[Name="Start"]}[Content]{0}[Column1])and[Bestätigungsdatum]=Date.From(Excel.CurrentWorkbook(){[Name="Ende"]}[Content]{0}[Column1])
),{"Gruppen"},"GefilterteZeilen",JoinKind.LeftOuter),"GefilterteZeilen",{"Bestätigungsdatum"}),each[Bestätigungsdatum]>null),
List.Combine({{"Auftragsbezeichnung-Gruppe","Customer","color","Hauptlabel"}, {"total pcs","XXXL","XXL","XL","L","M","S","XS","48",
"46","44","42","40","38","36","34","OS"}})),{"Auftragsbezeichnung-Gruppe","Customer","color","Hauptlabel"},"Attribut","Wert")
Anzeige
AW: PQ? Power Pivot?
10.09.2024 06:17:04
Luschi
Hallo0 Eifeljoi 5,

solche statischen Listen:
{{"Auftragsbezeichnung-Gruppe","Customer","color","Hauptlabel"},
 {"total pcs","XXXL","XXL","XL","L","M","S","XS","48",
  "46","44","42","40","38","36","34","OS"}
}
auf 1 Tabelle loszulassen, um Spalten zu selektieren, ist schon sehr waghalsig. Wenn in der nächsten Modelinie bestimmte Spaltenbezeichnungen nicht vorhanden sind...
Ein Kreuzvergleich zwischen Spaltennamen der Tabelle und gewollten Anzeigespalten sollte schon drin sein:
aa_1 = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],

aa_10 = Table.ColumnNames(aa_1),
aa_11 = List.Combine({{"Auftragsbezeichnung-Gruppe","Customer","color","Hauptlabel"},
{"total pcs","XXXL","XXL","XL","L","M","S","XS","48",
"46","44","42","40","38","36","34","OS"}
}),
aa_12 = List.Intersect({aa_10, aa_11}),
aa_13 = Table.SelectColumns(aa_9, aa_12) //aa_9 ist die Tabelle mit den selektierten Zeilen

Aber bei Deiner Tiny-M-Code-Variante sind solche Prüfungen einfach nicht drin.
Mal schauen, ob der Fragesteller {Boris} damit zurecht kommt?

fragt sich Luschi
aus klein-Paris

Anzeige
An alle: Klasse!
10.09.2024 14:57:14
{Boris}
Hallo zusammen,

im Moment habe ich mein Vorhaben noch mittels Formellösung bewerkstelligt. Da weiß ich zumindest, was da passiert ;-)
Für die Zukunft (die max. 1 Monat entfernt ist) möchte ich das aber ändern und habe mir den Thread somit gespeichert, um damit zu lernen. Genügend Lernstoff habt ihr mir ja dankenswerter Weise zur Verfügung gestellt!
Ich werde hier also erst mal keine weiteren Fragen stellen, sondern bedanke mich ganz herzlich bei Euch allen!
Wird aber sicher nicht mehr lange dauern, bis ich - mit Bezug auf diesen Thread - hier wieder vorstellig werde ;-)

Viele Grüße

Boris
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige