Powershell - CSV - kleinster Wert einer Gruppe
Moin zusammen,
ich habe da eine Problemstellung, die ich normalerweise simpel mit einer Schleife lösen würde. Da ich in der Vergangenheit aber immer wieder gemerkt habe, dass die Powershell doch einiges mehr kann und dabei auch noch performanter ist, möchte ich hier mal fragen, ob es da evtl. einen anderen Ansatz gibt.
Angenommen folgende CSV (extrem eingekürzt - klassisches Parent/Child):
Was ich jetzt brauche ist der niedrigste Preis beim Parent - also bei P1 4.00 und bei P2 5.00 also wie folgt:
Gibt es da eine "bessere" Variante, als das ganze mit Hilfsvariablen und Schleife durchzugehen?
Gruß Krämer
ich habe da eine Problemstellung, die ich normalerweise simpel mit einer Schleife lösen würde. Da ich in der Vergangenheit aber immer wieder gemerkt habe, dass die Powershell doch einiges mehr kann und dabei auch noch performanter ist, möchte ich hier mal fragen, ob es da evtl. einen anderen Ansatz gibt.
Angenommen folgende CSV (extrem eingekürzt - klassisches Parent/Child):
Typ Gruppe Preis
P 1
C 1 4.00
C 1 5.00
P 2
C 2 7.00
C 2 5.00
Was ich jetzt brauche ist der niedrigste Preis beim Parent - also bei P1 4.00 und bei P2 5.00 also wie folgt:
Typ Gruppe Preis
P 1 4.00
C 1 4.00
C 1 5.00
P 2 5.00
C 2 7.00
C 2 5.00
Gibt es da eine "bessere" Variante, als das ganze mit Hilfsvariablen und Schleife durchzugehen?
Gruß Krämer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366090
Url: https://administrator.de/contentid/366090
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
4 Kommentare
Neuester Kommentar
$csv = Import-CSV "C:\datei.csv" -delimiter "`t"
$csv | sort Preis | group Gruppe | %{
$_.Group.Preis = $_.Group | select -Skip 1 -First 1 -Expand Preis
}
$csv
Tante EDIT: Korrektur vorgenommen.
Der Ablauf ist folgender:
könntest du auch durch ein
Hoffe das war verständlich .
- CSV-Zeilen werden nach dem Preis sortiert
- Dann Anhand der Spalte "Gruppe" gruppiert
- Jede Gruppe wird dann mit einer FOREACH Schleife abgearbeitet
- In der Schleife wird dann der Preis des ersten Gruppen-Elements der Gruppe auf den Preis des zweiten Gruppenelements gesetzt, da die Elemente bereits nach Preis sortiert sind ist das der niedrigste Wert der Gruppe.
$_.Group | select -Skip 1 -First 1 -Expand Preis
könntest du auch durch ein
$_.Group[1].Preis
ersetzen, das war nur eine andere Variante.Hoffe das war verständlich .