xxleon18xx
Goto Top

CSV MAX Werte auslesen ohne Überschreiben der Vorhandenen Werte der neuen CSV-Datei

Hallo
mein Problem, ist ich habe einen Ordner mit einer Unbestimmten Anzahl von CSV Dateien.
Aus diesem Ordner soll von jeder CSV Datei der MAX-Wert ausgelesen werden und in eine neue CSV Datei geschrieben werden.

Hier ist mein aktuelles Powershell-Skript leider kann ich hier nur einzelne Dateien auslesen.

Import-CSV 'Ordner-Path' -Delimiter ";" -Encoding Default | sort {[decimal]$_.Value} -Descending | select -F 1 | export-csv 'C:\Users\LeonThomas\Desktop\CSV-Test\test\Maxwert.csv' -Delimiter ";" -NoType -Encoding Default -Append #>  

Auserdem soll das Skript die MAX-Werte in der neuen CSV Datei nicht überschreiben
und auch nur die MAX-Werte die noch nicht in der neuen CSV Datei vorhanden sind reinschreiben.

Die CSV-Dateien aus denen der MAX-Wert gelesen werden soll, sehen zum Teil so aus:

"Series";"Time";"Value"
"Total Session Number";"2020-01-15 01:00";55
"Total Session Number";"2020-01-15 01:02";57
"Total Session Number";"2020-01-15 01:04";57
"Total Session Number";"2020-01-15 01:06";57
"Session Access";"2020-01-15 17:36";"197"


Das erwartete Ergebnis soll so aussehen:

"Series";"Time";"Value"
"Total Session Number";"2020-01-15 17:36";"197"
"Session Access";"2020-01-15 17:36";"197"


Da die CSV-Dateien zum Teil nicht immer die gleichen sind (Unterschiedlicher "Series" Name und unterschiedlicher Datei-Name)war meine Idee,
die vorhanden MAX-Werte anhand des Series Namen und der Time zuvergleichen.
Dies hatte ich überlegt, mit Hilfe eines Arrays oder ähnlichem zu lösen.
Leider wüsste ich nicht, wie ich das machen sollte.


Kann mir jemand bei der Lösung des Problems helfen?

Content-Key: 545087

Url: https://administrator.de/contentid/545087

Printed on: May 2, 2024 at 03:05 o'clock

Mitglied: 142232
142232 Feb 10, 2020 updated at 09:59:13 (UTC)
Goto Top
# ===========
$path_ordner = 'D:\Daten'  
$path_maxwerte = 'D:\maxwerte.csv'  
# ===========
if (Test-Path $path_maxwerte){
    $maxwerte = Import-Csv $path_maxwerte -Delimiter ";"  
}else{
    $maxwerte = @()
}
Get-ChildItem -LiteralPath $path_ordner -Filter *.csv -File | %{
    $maxwerte += Compare $maxwerte (Import-CSV $_.Fullname -Delimiter ";" | sort {[datetime]$_.Time} -Descending | sort {[int]$_.Value} -Descending | group Series | %{$_.Group}) -Property Series,Time,Value | ?{$_.SideIndicator -eq '=>'} | select * -ExcludeProperty SideIndicator  
}

$maxwerte | export-csv $path_maxwerte -Delimiter ";" -NoType -Encoding UTF8