Doppelte Eintrage in einer CSV Datei mit PowerShell löschen (Kriterium Aktualität) . Filter
Hallo,
ich nutze folgenden Code für mein Problem:
Der Code öffnet alle CSV-Dateien in einem Ordner inkl. der Unterordner und löscht jeweils die erste und letzte Zeile.
Zudem werden die Inhalte absteigend nach der dritten Spalte "TImestamp" und der 5 Spalte "Modifikation Timestamp sortiert".
Es kann sein, dass die Messwerte öfter als einmal auftreten = Gleicher "Timestamp" und unterschiedlich aktuell sind, unterschiedlicher "Modifikation Timestamp".
Ich möchte nun in die neu erzeugte CSV- Datei nur die aktuellsten Werte übernehmen, falls in der Spalte "Timestamp" doppelte Werte vorhanden sind.
Eine Beispiel CSV Datei liegt bei:
http://workupload.com/file/ZFSbTG2
Vielen Dank.
Rippchen
ich nutze folgenden Code für mein Problem:
$folder = 'C:\Users\ICH\Desktop\Import'
$out = 'C:\Users\ICH\Export\Gesamt.csv'
gci $folder -Filter *.csv -recurse | %{
$raw = ((gc $_.FullName) | select -Skip 1)
$csv = $raw[0..($raw.GetUpperBound(0)-1)]| ConvertFrom-CSV -Delimiter ";" -Header "1","2","Timestamp","4","Modifikation Timestamp","6","7"
$csv | Sort-Object -Property "Timestamp", "Modifikation Timestamp" -descending |export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8
}
Der Code öffnet alle CSV-Dateien in einem Ordner inkl. der Unterordner und löscht jeweils die erste und letzte Zeile.
Zudem werden die Inhalte absteigend nach der dritten Spalte "TImestamp" und der 5 Spalte "Modifikation Timestamp sortiert".
Es kann sein, dass die Messwerte öfter als einmal auftreten = Gleicher "Timestamp" und unterschiedlich aktuell sind, unterschiedlicher "Modifikation Timestamp".
Ich möchte nun in die neu erzeugte CSV- Datei nur die aktuellsten Werte übernehmen, falls in der Spalte "Timestamp" doppelte Werte vorhanden sind.
Eine Beispiel CSV Datei liegt bei:
http://workupload.com/file/ZFSbTG2
Vielen Dank.
Rippchen
Please also mark the comments that contributed to the solution of the article
Content-Key: 305683
Url: https://administrator.de/contentid/305683
Printed on: April 23, 2024 at 21:04 o'clock
6 Comments
Latest comment
Hallo Rippchen,
bei solchen Aufgaben hilf einem sehr gut das CMDLet group-object (Alias: group). Ersetze in deinem Skript oben Zeile 6 durch das hier:
Das macht folgendes:
Es werden die die Zeilen mit gleichen "Timestamps" Gruppiert, dann wird für jede dieser Gruppen innerhalb dieser Gruppe nach der Spalte "Modifikation Timestamp" (Denglisch ) Absteigend sortiert und nur der erste Eintrag der Gruppe übernommen.
Grüße Uwe
bei solchen Aufgaben hilf einem sehr gut das CMDLet group-object (Alias: group). Ersetze in deinem Skript oben Zeile 6 durch das hier:
$csv | group {get-date $_.Timestamp} | %{
$_.Group | sort {get-date $_.'Modifikation Timestamp'} -Descending | select -First 1
} | Sort "Timestamp", "Modifikation Timestamp" -descending | export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8
Es werden die die Zeilen mit gleichen "Timestamps" Gruppiert, dann wird für jede dieser Gruppen innerhalb dieser Gruppe nach der Spalte "Modifikation Timestamp" (Denglisch ) Absteigend sortiert und nur der erste Eintrag der Gruppe übernommen.
Grüße Uwe
Keine Ursache.
Grüße Uwe
Ich wünsche noch ein schönes Restwochenende .
Wünsche dir ebenso Grüße Uwe
Ja, aber, das hat ja nun rein gar nichts mehr mit der obigen Fragestellung zu tun, also mache dazu einen neuen Thread auf. Merci.
Und dann aber bitte auch mit allen hier dazu benötigten Infos wie OS etc.
Und dann aber bitte auch mit allen hier dazu benötigten Infos wie OS etc.