Jump to content
Sign in to follow this  
dop3

CSV mit Powershell Sortieren und Filtern

Recommended Posts

Servus.. Ich habe ein Problem mit einer CSV Datei dessen Werte ich gerne Sortieren und Filtern möchte.

zur Info.. Die CSV Datei exportiere ich aus einem Essen Bestellprogramm einer gößeren Firma (hab die CSV mal als TXT angehangen).

Ich möchte gerne herausfinden wie viel mal jedes Essen bestellt wurde und von welcher "Gruppe/Benutzer". Die Spalten Wertstellung, Benutzer und Buchungstext sind quasi die die ich benötige.

Zum Schluss sollte es ungefähr so aussehen:

 

 

Datum		Benutzer	Essen		Menge
-----		--------	-----		-----
04.06.2018	Metall 1	Currywurst		10
04.06.2018	Montage 2	Currywurst		5
05.06.2018	Metall 3	Kesselgulasch		9

 Ich habe jetzt schon einige Sachen probiert, aber bekomme es einfach nicht korrekt Sortiert. :sauer2: Ich bin jetzt auch nicht so der Powershell Pro aber ich würde mich über ein paar Lösungsvorschläge freuen (falls es überhaupt Möglich ist :cry3:  )

 

Grüße, Stefan

essen.txt

Edited by dop3

Share this post


Link to post
Share on other sites

Die Daten sind bescheiden. In der Spalte Buchungstext sind mehrere Informationen, die gesplittet werden müssen.

Du musst nach mehreren Properties gruppieren, was es nativ mit Powershell nicht so einfach ist:

https://stackoverflow.com/questions/30769809/powershell-group-by-multiple-properties

 

Ich würde dir Empfehlen das in Excel auszuwerten. Mit Powershell wird das sehr aufwändig (ist aber sicher Möglich).

Share this post


Link to post
Share on other sites
Am 30.5.2018 um 23:23 schrieb Dukel:

Die Daten sind bescheiden. In der Spalte Buchungstext sind mehrere Informationen, die gesplittet werden müssen.

Du musst nach mehreren Properties gruppieren, was es nativ mit Powershell nicht so einfach ist:

https://stackoverflow.com/questions/30769809/powershell-group-by-multiple-properties

 

Ich würde dir Empfehlen das in Excel auszuwerten. Mit Powershell wird das sehr aufwändig (ist aber sicher Möglich).

Warum soll das mit der Shell aufwändig sein?
Solange die CSV Textqualifizierer bzw Spaltentrenner hat ist das doch ein leichtes.
 

$CSV-Datei = Import-CSV -Path <Pfad> -Delimiter <Textqualifizierer>
  $CSV-Datei.Spaltenname

usw

 

Sehe gerade, dass es ja ohne Ende Gerichte gibt und dass die CSV gar nicht mal so durchsichtig ist.
All zu kompliziert sollte es nun nicht sein, aber zeitaufwändig. Viel Erfolg^^

Edited by BeatYa

Share this post


Link to post
Share on other sites

Hast du dir die Daten schon angeschaut? Das einlesen als CSV ist das einfachste, aber alles weitere wird sehr kompliziert.

Share this post


Link to post
Share on other sites
vor 1 Stunde schrieb Dukel:

Hast du dir die Daten schon angeschaut? Das einlesen als CSV ist das einfachste, aber alles weitere wird sehr kompliziert.

Jup, habe ich.
Könnte man mit verschiedenen Herangehensweisen lösen und es muss einiges gefiltert werden.
Ein paar Vorabinfos wären hilfreich, wie zB welche Gerichte es genau gibt, ob die Gerichte immer gleich bleiben usw..

Großartig schwierig ist es nun halt nicht, nur aufwändig.

Edited by BeatYa

Share this post


Link to post
Share on other sites

Naja, der Benutzer ist immer das 3. Wort (-split( " " )[2]) und das Essen steht zwischen "Essensbestellung:" und "(" (-match "^.*Essensbestellung: (.*) \(.*$"). Damit dann durchloopen und ein neues Array mit den benötigten Eigenschaften und Werten erzeugen. Das dann in Sort und Group pipen...

Aber grundsätzlich haben die Vorredner Recht - die Daten sind nicht wirklich prickelnd :shock2:

Share this post


Link to post
Share on other sites
Am 30.5.2018 um 22:51 schrieb dop3:

Zum Schluss sollte es ungefähr so aussehen:

Prinzipiell kein Problem. Definiere ein Objekt und die Values sind jeweils String Arrays [string[]]. Dann sollte deine Ausgabe so passen. Ich muss jetzt weg, noch den Rest Sonne genießen. Später schaue ich es mir nochmal an.

Edited by MurdocX

Share this post


Link to post
Share on other sites

Wenn du die Befehlsfolge verwendest, dann werden Dir schon mal nur die Besagten Benutzer,Buchungstext,Wertstellung angezeigt.

Get-Content -Path "C:\Users\...\Downloads\essen.txt" -Encoding utf8 | ConvertFrom-Csv -Delimiter ';' | Select-Object -Property Benutzer,Buchungstext,Wertstellung | Format-Table -Wrap -Property Benutzer,Wertstellung,Buchungstext

Es gibt nun über die Funktion "Substring" die Möglichkeit gewisse Informationen herauszuziehen und über "Custom Header" in Format-Tabel die Überschriften anzupassen. Damit solltest du schon weiterkommen.

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...