Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
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

Datentransformation mit Power Query?

Datentransformation mit Power Query?
22.05.2022 11:05:14
Klaus_ww
Hallo zusammen,
ich habe Grundkenntnisse in Power Query, bin jetzt aber in einer Sackgasse aus der ich nicht mehr alleine rausfinde. Vielleicht ist PQ auch nicht das richtige Werkzeug und ich suche vergebens.
Datenlage: Datei mit Zeitstempel und Events, jeweils in 1 Zeile
Ziel: per Transformation die jeweilige Zeitdauer zwischen Start und Stopp berechnen. Die Events kommen immer in der gleichen Reihenfolge.
Beispieldatei:

Die Datei https://www.herber.de/bbs/user/153200.xlsx wurde aus Datenschutzgründen gelöscht


Das ganze soll dynamisch sein, also nicht auf feste Bereiche festgelegt.
Freue mich über Denkanstöße oder auch gerne Alternativen die ich gerade nicht sehe.
Schönen Sonntag
Klaus

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datentransformation mit Power Query?
22.05.2022 12:02:33
ralf_b
Arbeitsblatt mit dem Namen 'Tabelle1 (2)'
 ABCD
1IndexStartEndeDauer
2122.05.2022 10:0022.05.2022 10:050.00:05:00
3222.05.2022 10:3422.05.2022 10:340.00:00:41

https://www.herber.de/bbs/user/153201.xlsx
Anzeige
AW: Datentransformation mit Power Query?
22.05.2022 20:07:49
Klaus_ww
Hallo Ralf,
das sieht gut aus, danke.
Leider mecker mein Excel beim Updateversuch: [Expression.Error] 5 Argumente wurden an die Funktion übergeben, erwartet wurden jedoch zwischen 2 und 4.
Abfrage wurde mit neuerer Version erstellt.
Meine Version heißt Excel 2016 MSO (16.0.4266.1001) 64-Bit.
Den PQ Code kann ich aber anschauen, ich verstehe das so:
- 2-mal laden der Tabelle, einmal Selektion auf Start, einmal auf Stopp
- Indexspalte dazu
- die beiden Tabellen mit Index verknüpfen, Differenz aus den Timestamps bilden und ausgeben
Passt?
AW: Datentransformation mit Power Query?
22.05.2022 20:42:34
Klaus_ww
Gerade mal gecheckt, es hängt am Erstellen der Indexspalte.
So geht's (aus meinem Excel):
= Table.TransformColumnTypes(#"Hinzugefügter Index1",{{"Index", Int64.Type}})
So nicht (aus Deinem Code):
= Table.AddIndexColumn(#"Gefilterte Zeilen1", "Index", 1, 1, Int64.Type)
Aber wie auch immer, Du hast mir den Weg gezeigt, vielen Dank dafür!
Anzeige
AW: Datentransformation mit Power Query?
23.05.2022 13:04:25
Klaus_ww
Danke, klappt!
AW: Datentransformation mit Power Query?
23.05.2022 13:26:30
Luschi
Hallo Klaus,
hier mal mein Lösungsansatz, dabei wird per M-Code die Stoppzeit in die gleiche Zeile wie die Startzeit geholt und dann die Dauer berechnet.
https://www.herber.de/bbs/user/153220.xlsx
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datentransformation mit Power Query?
23.05.2022 14:22:51
ChrisL
Hi
Luschi hat mich zu einer weiteren Lösungsvariante inspiriert :)
https://www.herber.de/bbs/user/153222.xlsx
Um die in PQ integrierte Funktionalität zum Pivotieren zu nutzen, habe ich den Index mittels Number.Mod (Modalität, REST) in 0, 0, 1, 1, 2, 2 umgerechnet.
cu
Chris
AW: Datentransformation mit Power Query?
23.05.2022 15:35:11
ChrisL
Quatsch, was erzähle ich. Nicht Mod/Rest (würde 0, 1, 0, 1, 0, 1 ergeben) sondern:
=Number.RoundDown([Index]/2,0)
AW: Datentransformation mit Power Query?
23.05.2022 17:01:20
Klaus_ww
Auch sehr cool, dazu noch kompakt - wieder was gelernt.
Mein Excel meckert auch hier wegen neuerer Version, aber das kenne ich ja schon.
Danke euch allen, bis zum nächsten Mal :-)
Anzeige
AW: nachgefragt ...
23.05.2022 21:17:57
neopa
Hallo Klaus,
... was wird wie genau durch Deine Excel-Version "angemeckert"? Welche Excelversion hast Du denn? Diese wird angezeigt im Menü Datei unter dem Menüpunkt: Konto. Ich habe auch XL2016 in der Version 2204 (Build 15128.20224 MS Store) und da wird nichts angemeckert.
Gruß Werner
.. , - ...

AW: Datentransformation mit Power Query?
23.05.2022 20:19:01
Luschi
Hallo ChrisL,
Dein neuer Lösungsansatz gefällt mir ausgezeichnet, zeigt aber auch das Dilemma (wie auch bei meinem Vorschlag) an: woher soll der Anwender beim Nachvollziehen der Lösungsschritte wissen:
- ist das mit PQ-Menü-Schrittfolgen erstellt (also mit Mausklicks)
- oder ist dazu tieferes PQ-M-Wissen erforderlich
- z.B. bei Dir: = Table.Pivot(#"Entfernte Spalten", List.Distinct(#"Entfernte Spalten"[Event]), "Event", "Timestamp")
Ich weiß bis jetzt nicht, wie ich das per PQ-Menü-Schrittfolge realisieren kann, als M-Befehl ist mir das aber total erklärbar - aber was macht der PQ-Otto-Normalverbraucher?
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datentransformation mit Power Query?
24.05.2022 08:49:09
ChrisL
Hi Luschi
Ja das ist immer so eine Sache, wie tief man in die Trickkiste von PQ greifen soll, damit die Lösung noch nachvollzogen werden kann. Hängt auch immer ein wenig vom Hintergrund ab z.B. eine Person die im SQL Umfeld zuhause ist, wird Join-basierte Ansätze mit Leichtigkeit verstehen.
Dann gilt es die Performance abzuwägen. Ich denke alle unsere Ansätze sind vergleichbar, weil sie keine z.B. Datensatz-übergreifende, komplexe Berechnungen enthalten. Wenn ich raten müsste würde ich annehmen, dass Ralf mit Join unmerklich einen Tick vorne liegt. Allerdings sollte man in einer optimierten Version die Quelle hierfür nur einmal beziehen.
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content]
Abfrage1 = Quelle
Abfrage2 = Quelle
Ein weitere Faktor wäre die "Resistenz ggü. Inkonsistenzen". Wenn die Daten nicht maschinell und absolut Wasserdicht geprüft vorliegen, müsste man sich etwas einfallen lassen. Momentan würden alle unsere Lösungen zu fehlerhaften Resultaten führen (den Versatz müsste man erstmal bemerken), wenn z.B. mal ein einzelner Stopp-Wert fehlen würde.
Zur eigentlichen Anmerkung. Also wenn sich bei Klick aufs Zahnrädchen im Einzelschritt ein Dialog öffnet, ist dies schon ein starkes Indiz, dass es sich um einen Standarddialog handelt :) Schade, dass sich dabei die erweiterte Option nicht gleich automatisch öffnet. Im Dialogfenster gibt es zudem einen Link "Weitere Informationen über 'Spalte pivotieren'".
Ich muss aber zugeben, dass der Dialog gut versteckt ist.
1. Immer diejenige Spalte markieren, welche man als Spaltentitel verwenden will
Userbild
2. Werte-Spalte einstellen und die erweiterten Optionen beachten
Userbild
cu
Chris
Anzeige
AW: Datentransformation mit Power Query?
24.05.2022 10:00:48
Luschi
Hallo ChrisL,
danke für deine Hinweise und die Aufklärung bei der Durchführung der gemachten Schritte. Manchmal sieht man den Wald vor lauter Bäume nicht; micht hatte nur dieser Hinweis beim Klick auf das Zahnrad irritiert:

Verwenden Sie die Namen der Spalte "Event" zum Erstellen neuer Spalten
Bin einfach nicht drauf gekommen, daß die Spalte 'Event' markiert sein muß, bevor man den Pivotieren-Button drückt.
Gruß von Luschi
aus klein-Paris
AW: Datentransformation mit Power Query?
25.05.2022 06:34:42
Klaus_ww
Hallo Luschi & Chris,
vielen Dank für euer Zutun, sehr interessant für mich als PQ-Mausklicker :-)
Das Pivotieren habe ich auch nicht gefunden im Menü, aber kaum weiß man's ist total einfach.
Die Warnung vor Falschberechnungen bei fehlerhaften Grunddaten ist sehr begründet, das gibt's nämlich tatsächlich. War mir aber für das Thema nicht wichtig und wie immer gilt Sh.t in > Sh.i out.
Die Performance ist vermutlich zu vernachlässigen, wir sprechen von Alle Lösungen haben vermutlich Vor- und Nachteile, gelernt habe ich bei allen etwas.
Grüße
Klaus
Anzeige
AW: Datentransformation mit Power Query?
25.05.2022 09:23:58
ChrisL
Hi
Ich gebe gerne zu, man kann es auch übertreiben. Aber zum Zeitvertreib trotzdem noch eine neue Variante, welche auch mit Inkonsistenzen umgehen kann.
https://www.herber.de/bbs/user/153259.xlsx
Ein paar Vorgehensweisen kurz erklärt.
Quelle
Einmaliger Quellbezug und vorbereiten (Typenkonvertierung/Sortierung)
Abfrage1
Erstmal über eine benutzerdefinierte Spalte alle Fehler identifizieren und danach ausfiltern/pivotieren:

Fehler = if
([Event]="Start" and List.First(List.Range(Quelle[Event],[Index]+1,1))  "Stopp") or
([Event]="Stopp" and List.First(List.Range(Quelle[Event],[Index]-1,1))  "Start") then
true else false
Abfrage2
Über einen Anti-Join mit Abfrage1 die fehlerhaften Zeilen eliminieren. Dann wie schon in vorherigen Lösungen einen "Versatz" erzeugen. Dieses mal habe ich es mittels zwei Index-Spalten (eine beginnend bei 0 und eine beginnend bei 1) gemacht. Danach mit einem Self-Join die Abfrage mit sich selber zusammengeführt.
Anfügen
Abschliessend die Fehler- und die OK-Fälle angefügt und sortiert.
cu
Chris
Anzeige
AW: wobei ...
25.05.2022 09:45:53
neopa
Hallo Chris
... dies auch nur eine von weiteren Interpretationsmöglichkeiten ist.
So könnte ja z.B. auch als zweite Dauer 23.05.2022 00:20:00 - 22.05.2022 10:34:00 = 0.13:46:00 berechnet werden.
Gruß Werner
.. , - ...
AW: wobei ...
25.05.2022 10:19:51
ChrisL
Hi Werner
Ja klar, man müsste der Ursache auf den Grund gehen und dann korrekt interpretieren. Könnte ja auch sein, dass ein Stopp und ein Start hintereinander verloren gingen, dies liesse sich dann gar nicht mehr erkennen (höchstens vielleicht noch plausibilisieren).
Übrigens zur Nachfrage betr. Excel-Version. Müsste zwar Klaus beantworten, aber ich vermute zuerst war es ein echter Fehler (das Thema mit dem 5. Parameter) und anschliessend dann nur noch die allgemeine Warnung.
Userbild
cu
Chris
Anzeige
AW: wobei ...
25.05.2022 10:27:53
Klaus_ww
Mensch, ihr macht euch echt Mühe, aber ist ja weiterhin lehrreich. Finde ich super!
Meine Excel-Version hatte ich schon mal mitgeteilt, aber wer liest schon alles ;-)
Sie heißt Excel 2016 MSO (16.0.4266.1001) 64-Bit.
Grüße
Klaus
AW: dann ...
25.05.2022 11:01:28
neopa
Hallo Klaus,
... ist die von Dir benannte Fehlermeldung möglicherweise auf Deine 64-Bit Version zurückzuführen. Meine Excelversion hatte ich bewusst als 32 Bit-Version installiert.
Gruß Werner
.. , - ...
AW: dann ...
29.05.2022 19:49:02
Klaus_ww
Hi Werner,
ich habe bewußt als 64-Bit Version installiert. Weil ... irgendwie dem OS angepasst.
Aber wir haben ja hübsche Lösungen.
Guten Wochenstart
Klaus
AW: danke für Deine Rückinformation ...
30.05.2022 09:14:19
neopa
Hallo Klaus,
... dann musst Du offensichtlich zumindest ab und zu größere Datenmengen auswerten, dafür wird die 64-Bit Version auch empfohlen.
Gruß Werner
.. , - ...
AW: Datentransformation mit Power Query?
22.05.2022 20:43:45
ralf_b
da kann ich dir nicht viel weiterhelfen. Ich schüttele sowas auch nicht aus dem Ärmel.
Ich hab 2016 32 bit. Aber das sollte bei PQ eigentlich kein Problem darstellen.
Es gibt in meiner Lösung keine Argumentübergabe.
update: OK owt
22.05.2022 20:46:17
ralf_b

292 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige