Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen

PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
28.01.2024 10:31:50
lippih
Hallo,

Im Folgenden zeige ich einen Code-Auszug aus Power Query:

#"Zeilen Concat" = Table.AddColumn(#"ReplaceNull", "Liste Concat", each List.Transform(List.Zip({List.RemoveFirstN(Record.ToList(_)), List.RemoveFirstN(Record.ToList(#"ReplaceNull"{0}))}), each Text.Combine(_))),

#"Spalte Fr lang" = Table.AddColumn(#"Zeilen Concat", "Fr lang", each List.Accumulate([Liste Concat],
0,
(st, cur)=> st + Anzahl_Fr8(cur, "Fr"))),


Der Code funktioniert, aber ich wollte die zwei Zeilen zusammenfassen, denn die erste Zeile erzeugt eine Hilfsspalte in der Tabelle, die ich nicht brauche, deshalb sollte die erste Zeile in die zweite Zeile integriert werden; ich stehe aber gerade auf dem Schlauch und bekomme das "syntax-mäßig" nicht hin. Kann mir da vielleicht jemand ein wenig unter die Arme greifen?
Übrigens, für die Frage nicht relevant, aber der Volständigkeit halber: die oben vorhandene Funktion macht folgendes:

Anzahl_Fr8 = (x1 as any, x3 as text) => 

let
x2 = if Text.Contains(Text.From(x1), "8") and Text.Contains(Text.From(x1), x3) then 1 else 0
in
x2,



9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
28.01.2024 10:49:00
Luschi
Hallo lippih,

da der M-Code von mir ist, kann ich Dir natürlich auch weiterhelfen - aber nur, wenn Du das Beispiel mit ein paar harten Fakten (Demodatei) unterfütterst.

Gruß von Luschi
aus klein-Paris
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
28.01.2024 11:34:35
lippih
Ok, werde ich machen, ich muss aber die zugrunde liegenden txt-Dateien etwas bearbeiten, da sie sensible Daten beinhalten, das dauert ein klein wenig ...
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
29.01.2024 08:00:05
Luschi
Hallo lippih,

von txt-Dateien zu sprechen, wenn der Inhalt html-Code enthält, ist schon stark übertrieben, aber PQ erkennt diesen Schwindel und liest die Daten ein. Mir ist nicht so ganz klar, was das Ziel sein soll:
- immer noch alle 8-en je Zeile ermitteln
- oder was ganz Anderes?

fragt sich Luschi
aus klein-Paris


AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
29.01.2024 15:03:43
lippih
Hallo Luschi,

Dass die html Datei als Textdatei von Power Query angenommen, habe ich zufällig entdeckt, und erleichtert mir so, relativ einfach an die "Grunddaten" zu kommen. Solange es so funktioniert, geht es gut für mich.

Zu meinen Zielen:
- Die Spalte mit den "8", die passt so, wie sie ist und die brauche ich auch. Ich habe sie im obigen Beispiel vorübergehend übersprungen, da sie mir einen Error generiert in der nächsten Spalte (siehe Zeile 30 und 31). Um dieses Problem möchte ich mich später kümmern.
- in den Zeilen 30 und 31 generiere ich 2 Spalten, die in der Form wie du sie im Beispiel oben siehst eigentlich funktionieren. Die erste Spalte (Codezeiel 30) ist "nur" eine Hilfsspalte für mich (weil ich es nicht besser kann). Diese Hilfspalte "zipt" die gewünschten Zellen in einen Ausdruck zusammen, damit ich sie anschließend überprüfen kann. Ich weiß, dass ich diese Spalte am Ende einfach ausblenden könnte, doch ich weiß auch, dass man die zwei Code-Zeilen codemäßig zusammenfassen kann und das reizt mich zu wissen wie, deshalb meine Frage. Aber genau das kriege ich nicht hin. Am Ende brauche ich nur die Spalte von Codezeile 31, die (zusammen mit Codezeile 30) praktisch paarweise überprüft ob in in der aktuellen Zelle der Zeile eine 8 steht UND ob in der ersten Zelle der derselben Spalte ein "Fr" steht, und mir die Anzahl der Treffer darstellt (z.B. C8 und "FR" oder G8 UND "Fr" usw.)

Ich hoffe das war halbwegs verständlich formuliert ...

Am Ende würden mehrere dieser Überprüfungen in der Tabelle Platz finden, aber da wäre das Konzept immer dasselbe.

Viele Grüße
Heinz
Anzeige
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
30.01.2024 04:03:00
Luschi
Hallo Heinz,

so ganz klar ist mir immer noch nicht alles:
- in den Zeilen 30 und 31 generiere ich 2 Spalten,
- Die erste Spalte (Codezeiel 30)
- ich verstehe nicht, von welchen Zeilen Du da sprichst- und welche Du dann zu einem PQ-Schritt zusammenfassen willst.

Hier erst mal ein Tipp:
- in dem nachfolgenden verschachtelten PQ-Schritt kommt bei Dir 2x 'each' vor aber beide weisen auf verschiedene Objekte
- das 1. 'each' wird von Table.AddColumn gesteuert und übergibt jede Datenzeile als Record
- das 2. 'each' wird von List.Transform angesprochen und übergibt jedes Listenelement, um es zu verändern
- deshalb sollte man beide each auflösen in (k)=> bzw. (j)=> (also 2 verschiedene Buchstaben, welche ist dann egal)
- und den '_' durch den entsprechenden Buchstaben ersetzen
- die Standardauflösung ist eigentlich (_)=>

 #"Zeilen Concat" = Table.AddColumn(#"ReplaceNull", "Liste Concat",

(k)=> List.Transform(List.Zip(
{List.RemoveFirstN(
Record.ToList(k)),
List.RemoveFirstN(
Record.ToList(#"ReplaceNull"{0}))}),
(j)=> Text.Combine(j))),


Bei mir sähe dieser PQ-Schritt aber so aus:
#"Zeilen Concat" = Table.AddColumn(#"ReplaceNull", "Liste Concat_2",

(k)=> let a1 = List.RemoveFirstN(Record.ToList(k)),
a2 = List.RemoveFirstN(Record.ToList(#"ReplaceNull"{0})),
a3 = List.Zip({a1, a2}),
a4 = List.Transform(a3, (j)=> Text.Combine(j))
in a4),


Gruß von Luschi
aus klein-Paris

PS: Bin gespannt, was Du vorhast.

Anzeige
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
30.01.2024 11:08:09
lippih
Hallo Luschi,
erstmal danke für deine Mühen und vor allem für deine Geduld!

Wenn ich von Codezeilen spreche, dann meine ich die eingeblendete Zahlenspalte ganz links im erweiterten Editor in Power Query (einzublenden im erweiterten Editor oben rechts unter Anzeigeoptionen). Ich dachte dir so genaue Stellen im Code zeigen zu können, habe mich aber wohl sehr unglücklich/missverständlich ausgedrückt.

Tatsächlich habe ich den Unterschied zwischen (_)=> und each noch nicht ganz genau verstanden obwohl ich mir erst vor ein paar Tagen ein Video genau zu diesem Thema angeguckt habe, das muss ich noch vertiefen. Aber deine Lösung (ohne sie schon probiert zu haben) sieht schonmal verdammt übersichtlich aus, im Vergleich zu meiner verschachtelten Formel, wo allein das richtige Klammersetzen schon Horror ist.

Ich versuche nochmal mein Vorhaben zu erklären:
- Die Spalte "Liste Concat" beinhaltet in jeder Zelle ihrer Spalte wiederum eine Liste mit Werten.
- Die Spalte "Liste Concat" ist nur eine Hilfspalte für die eigentliche Aufgabe im nächsten Schritt, dessen Ergebnis in der Spalte "Fr lang" zu sehen ist.
- Da die Spalte "Liste Concat" nur nur eine Hilfspalte ist, möchte ich sie gar nicht erst generieren sondern den Code, der sie generiert direkt in die Formel miteinbeziehen, die die Spalte "Fr lang" generiert.
Oder anders ausgedrückt: Die Spalte "Fr lang" verarbeitet in ihren dazugehörigen Zellen momentan die Listen, die in der Spalte "Liste Concat" stehen. Ich möchte aber, dass die Spalte "Liste Concat" erst gar nicht entsteht, und die Spalte "Fr lang" die Listen, die sie zur Berechnung braucht auch selbst generiert (oder aus einer vorher generierten Variable/Liste holt?).
- Aber länger wir darüber diskutieren scheint es mir, als wäre diese Idee nur Schwachsinn und ich sollte die "Hilfsspalte" wenn sie nicht mehr benötigt wird einfach löschen.

Was denkst du darüber?

Ich werde in der Zwischenzeit mal deine Tips behelligen und versuchen einzubauen ...

Danke derweil und Grüße
lippih
Anzeige
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
31.01.2024 08:44:05
Luschi
Hallo Heinz,

ich denke mal, jetzt habe ich es auch kapiert und Dein Wunsch, zusätzliche Spalten zu verhindern, wenn man nur das Ergebnis braucht, ist mehr als verständlich. Dies funktioniert nur, wenn man sich eigene M-Funktionen dazu schreibt.
Die (einzige) neue Spalte wird mithilfe der Funktion #"fx_Zeilen Concat_2" erzeugt, die aber noch eine weitere Hilfs-Funktion 'fx_Anzahl_Fr_8' aufruft. Beide Funktionen sind aber Intern in der fx-Abfrage 'Datei transformieren_Luschi' definiert
In der Abfrage 'Beispieldatei transformieren_Luschi' habe ich dazu ein paar Kommentare reingeschrieben.

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

Gruß von Luschi
aus klein-Paris
Anzeige
AW: PQ-M: Hilfspalten eliminieren bzw. Code zusammenfassen
01.02.2024 18:49:47
lippih
Danke Luschi!

Leider gibt es trotz anpassen des Pfades beim Laden eine Fehlermeldung. Trotzdem glaube ich den Code so halbwegs verstanden zu haben. Tatsächlich habe ich aber jetzt ein größeres Problem, da ich glaube, dass ich mich mit dieser Tabelle verrannt habe: Ich habe die Tabelle in Power Query (abgesehen von der Spalte Liste Concat) soweit fertig, kriege in einer anschließend generierten Pivottabelle aber nicht das angezeigt was ich eigentlich wollte, da mir das Entpivotieren natürlich (bin ich dämlich!) alle berechneten Ergebnis vervielfältigt und somit die Summen nicht mehr stimmen. Ich glaube ich vergleiche hier irgendwie Äpfel mit Birnen oder so ähnlich ... ich glaube ich muss zurück zum Anfang oder ich versuche eine Lösung ohne PowerQuery ...

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige