lupora
Goto Top

Durch CSV iterieren und Werte im Array speichern mit Powershell

Hallo zusammen,

ich habe eine CSV Datei mit zwei Spalten.

  • in Spalte A ist eine ID.
  • In Spalte B ein Text.

Es können immer wieder die selben IDs vorkommen, jeweils mit anderen Texten in Spalte 2:

Beispiel:
123,Affe
233,Elefant
233,Tiger
233,Jaguar
123, Nilpferd

Ich möchte das Powershell durch alle EInträge durch iteriert. Der zweite Wert (Affe, Elefant..) soll grundsätzlich in ein Array geschrieben werden (mit ID)
Am Schluss sollen alle Arrays als CSV ausgegeben werden. In folgendem Aufbau:

123, Affe, Nilpferd
233, Elefant, Tiger, Jaguar

Er speichert praktisch alles was er pro ID findet und schreibt es in eine Zeile (array?)

Soweit bin ich schon:
Import-Csv $pfad| Foreach-Object { 

    foreach ($property in $_.PSObject.Properties)
    {
        $array = @($property.name, $property.value)

    } 

}

Aber ich bin leider Neuling :/
Freu mich über Hilfe!

Gruß

Content-ID: 926420134

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

TK1987
TK1987 06.07.2021 um 22:49:56 Uhr
Goto Top
Moin,

$File = "C:\Pfad\zur\File.csv"  
$Output = "C:\Pfad\zur\Output.csv"  

$CSV = Import-CSV $File -delimiter ',' -Header 'Id','Text'  

$CsvNeu = Foreach ($Id in $CSV | Group-Object -Property Id) {
  "{0},{1}" -f $Id.Name,($Id.Group.Text -Join ",")  
}

$CsvNeu | Set-Content $Output

tio.run

Gruß Thomas
Lupora
Lupora 07.07.2021 um 08:02:10 Uhr
Goto Top
Wow, mega gut! Du bist ja vollprofi face-smile Hab direkt mit dem Tool bissel rumgespielt.

Noch eine letzte Änderungsfrage:
Angenommen meine Tabelle sieht so aus:

Spaltenüberschrift:
id, tiername, beschreibung, name

Und meine Liste sieht so aus

123, Affe, säugetier, peter
123, Affe, bäume, peter
123, Affe, banane, peter
234, Nilpferd, wasser, sabine

Und ich möchte jetzt das er immer den Wert in der dritten Spalte (Beschreibung) aggregiert.
Er holt sich praktisch aus allen Zeilen immer den Inhalt des Feldes "Beschreibung" und aggregiert diese.

Dann würde die Liste so aussehen:
123, Affe, säugetier, bäume, banane, peter

Wie müsste ich das SCript umbauen? Hab in deinem Tool probiert die Gruppierungs ID zu ändern.
Hat aber net geklappt face-sad
148934
Lösung 148934 07.07.2021 aktualisiert um 08:22:41 Uhr
Goto Top
$File = "C:\Pfad\zur\File.csv"  
$Output = "C:\Pfad\zur\Output.csv"  

$CSV = Import-CSV $File -delimiter ',' -Header 'id', 'tiername', 'beschreibung', 'name'  

$CsvNeu = Foreach ($Id in $CSV | Group-Object -Property Id) {
  "{0},{1},{2},{3}" -f $Id.Name,$id.Group.tiername,($Id.Group.Beschreibung -Join ","),$id.Group.Name  
}

$CsvNeu | Set-Content $Output
oder als Oneliner
Import-CSV 'C:\Pfad\zur\File.csv' -delimiter ',' -Header 'id', 'tiername', 'beschreibung', 'name' | group Id | %{[pscustomobject]@{Id=$_.Name;tiername=$_.group.tiername;Beschreibung=($_.Group.Beschreibung -join ',');Name=$_.Group.Name}} | export-csv 'C:\Pfad\zur\Output.csv' -delimiter ',' -NoType -Encoding UTF8  
148656
148656 07.07.2021 um 08:12:04 Uhr
Goto Top
Moin,

Zitat von @Lupora:
...
Aber ich bin leider Neuling :/
Also wenn ich mir deine History so anschaue, Frage ich mich, ab wann ist man kein Neuling mehr?
Freu mich über Hilfe!

Gruß
Gruß
148934
148934 07.07.2021 um 08:24:22 Uhr
Goto Top
Zitat von @148656:

Moin,

Zitat von @Lupora:
...
Aber ich bin leider Neuling :/
Also wenn ich mir deine History so anschaue, Frage ich mich, ab wann ist man kein Neuling mehr?
Manche bleiben es ein Leben lang 😜
TK1987
Lösung TK1987 07.07.2021 aktualisiert um 08:26:08 Uhr
Goto Top
Würde ich so machen:
$File = "C:\Pfad\zur\File.csv"  
$Output = "C:\Pfad\zur\Output.csv"  

$CSV = Import-CSV $File -delimiter ',' -Header 'Id','Tiername','Beschreibung','Name'  

$CsvNeu = Foreach ($Obj in $CSV | Group-Object -Property Id,Tiername,Name) {
  "{0},{1},{2},{3}" -f $Obj.Group.Id, $Obj.Group.Tiername, ($Obj.Group.Beschreibung -Join ','), $Obj.Group.Name  
}

$CsvNeu | Set-Content $Output

Wenn du sicher bist, dass bei jeder Id der Tiername und Name immer gleich ist, kannst du natürlich auch wie im ersten Beispiel oben nur die Id-Eigenschaft mittels group-object gruppieren lassen.
Hier weden jetzt nur Objekte gruppiert, sofern diese 3 Eigenschaften alle übereinstimmen, ansonsten wird noch eine 2. Zeile mit den jeweils anderen Eigenschaften erzeugt.

tio.run

BTW: Hast du schon einen Blick in unseren Powershell Leitfaden für Anfänger geworfen?

Gruß Thomas
148656
148656 07.07.2021 um 08:28:56 Uhr
Goto Top
Zitat von @148934:

Zitat von @148656:

Moin,

Zitat von @Lupora:
...
Aber ich bin leider Neuling :/
Also wenn ich mir deine History so anschaue, Frage ich mich, ab wann ist man kein Neuling mehr?
Manche bleiben es ein Leben lang 😜

Na zum Glück gibt es administrator.de, wo man alles Outsourcen kann.
TK1987
TK1987 07.07.2021 um 09:21:04 Uhr
Goto Top
Zitat von @148656:
Also wenn ich mir deine History so anschaue, Frage ich mich, ab wann ist man kein Neuling mehr?
Manche bleiben es ein Leben lang 😜
Na zum Glück gibt es administrator.de, wo man alles Outsourcen kann.
🎵 Ich bin Beginner man, irgendwas fang ich immer an! 🎵
148656
148656 07.07.2021 um 09:36:38 Uhr
Goto Top
Zitat von @TK1987:

Zitat von @148656:
Also wenn ich mir deine History so anschaue, Frage ich mich, ab wann ist man kein Neuling mehr?
Manche bleiben es ein Leben lang 😜
Na zum Glück gibt es administrator.de, wo man alles Outsourcen kann.
🎵 Ich bin Beginner man, irgendwas fang ich immer an! 🎵

Mag ja alles schön und gut sein. Aber wenn ein User, der seit Ende 2019 registriert ist und In unzähligen Antworten den explizierten Hinweis auf weiterführende Lektüre bekommen hat. Und jedes Mal geantwortet hat: "schau ich mir an"…. Eventuell sollte man ihn auf entsprechende Kurse verweisen, die sein Arbeitgeber finanzieren kann. Zum Beispiel aus dem Heinemann Verlag https://shop.heinemann-verlag.de/seminare/264/online-intensiv-seminar-po ...
TK1987
TK1987 07.07.2021 um 09:53:48 Uhr
Goto Top
War eigentlich auch keine Kritik an deinem Post. Wollte nur mitteilen, das ich wegen euch jetzt einen Ohrwurm hab 😁
148656
148656 07.07.2021 um 11:34:27 Uhr
Goto Top
Zitat von @TK1987:

War eigentlich auch keine Kritik an deinem Post. Wollte nur mitteilen, das ich wegen euch jetzt einen Ohrwurm hab 😁

Ich hab es nur als Feedback wahrgenommen 😁
Lupora
Lupora 12.07.2021 um 13:48:49 Uhr
Goto Top
Hallo zusammen,

danke an TK1987 und 148934 für eure Super Unterstützung!

@cavemen
Tatsächlich sehe ich mich noch als Neuling. Auch wenn ich seit langer Zeit in dem Forum registriert bin, heißt das nicht das ich wöchentlich meine Powershell Kenntnisse erweitere. Das ist auch nicht für meinen Arbeitgeber.

Ich hab mir schon diverse Einführungen etc. angeschaut. Mit gefühlt 70% meiner Anfragen komme ich alleine zurecht.
Mit den restlichen lande ich hier. Die Frage wäre: Ab wann darf man hier seine Anfrage stellen und ab wann ist man Experte genug, es nicht mehr zu tun?