Guten Morgen,
ich habe ein Powershell Problem, welches ich selber nicht beheben kann bzw. bei dem ich mir nicht mehr sicher bin, ob es wirklich funktioniert auf deisem Wege.
Vorab möchte ich euch einmal schildern worum es überhaupt geht.
Ich habe eine Input Datei im CSV-Fornat mit vielen Benutzerdaten, aber um die ganze Sache etwas einfacher zu gestalten beschränke ich es mal auf 4 Datensätze.
ID;E-Mail-Adresse;Start;Ende;Produkt
11111;max@mustermann.de;01.01.2000;;Produkt1
22222;erika@musterfrau.com;02.01.2010;;Produkt1
22222;erika@musterfrau.com;01.01.1993;31.12.2020;Produkt2
33333;john@doe.net;02.02.2020;31.12.2020;Produkt
Nun möchte ich Datensätze mit der gleichen ID mittels Powershell zusammenfassen (powershell, da ich mich hier am Besten auskenne).
Die ID ist pro Person einmalig
Eine ID kann mehrmals vorkommen, da diese mehrere Produkte zu unterschiedlichen Zeitpunkten erworben haben kann
Zu einer ID gehört immer genau 1 E-Mail-Adresse
pro Datensatz gibt es immer ein Startdatum
pro Datensatz kann es ein Enddatum geben, muss es aber nicht
Ich habe die CSV in ein Array eingelesen und ein paar Kleinigkeiten gemacht, sodass die Daten wie oben vorliegen.
Jetzt zum wirklichen Problem:
Ich möchte die Datensätze nach der ID sortieren und doppelte Einträge entfernen, sodass es pro ID nur noch 1 Datensatz im Array gibt.
Dies funktioniert natürlich sehr einfach mittels
$daten | sort-object "ID" -unique
Jetzt werden Datensätze mit der gleichen ID zusammgeführt und es wird immer das neuere Datum gesetzt, was ich verstehen kann, aber leider nicht gewünscht ist.
Ich möchte immer das frühere Start Datum und das neuere End Datum haben.
Mir sind keine weiteren Parameter bekannt, die hier helfen könnten.
Ich könnte es über 2 Zählschleifen machen, die die Daten untereinander abgleichen und dann die gewünschten Daten zurückschreiben, aber dies würde durch die vielen Datensätze sehr lange dauern.
Hat jemand von euch eine Idee?
Liebe Grüße