kraehahn
Goto Top

Diverser Vergleich einer undefinierten Zeichenfolge abragen Powershell bzw. Oracle SQL

Hallo Community,

ich bin an einer Auswertung von verschiedenen Artikeln aus unserer Datenbank
und müsste einen Vergleich einer Liste durchführen, der folgendes macht:

Wir haben mehrer Artikel, die die gleiche Bezeichnung, jedoch eine andere Größe besitzen.
Z.B.
H07V-K 1x1,5 GR
H07V-K 1x1,5 SW
H07V-K 1x1,5 OR
H07V-K 1x1,5 WS
H07V-K 1x1,5 GG

H07V-K 1x2,5 GR
H07V-K 1x2,5 SW
H07V-K 1x2,5 OR
H07V-K 1x2,5 WS
H07V-K 1x2,5 GG

NYY-J 3X1,5RM
NYY-J 3X1,5RE
NYY-J 3X2,5RM
NYY-J 3X2,5RE

etc.

Also es gibt immer mehrere gleiche Bezeichnungen.
Dieses Muster kommt jedoch sehr oft vor. Sprich ich suche nach einem Vergleichsoperater, dem ich zuvor nicht sagen muss,
nach welchem Ausgangswert er suchen soll.
TrimEnd, um nur die Enden zu kürzen bringt nur bei den ersten beiden Artikelgruppen etwas, bei den restlichen jedoch nicht.
Mit -Match Sucher oder Group-Object, funktioniert es auch nicht. Bei Match, muss man ja einen Ausgangswert angeben
und Group-Object funktioniert auch nicht, da zwar der Teil "H07V-K" oft vorkommt, der Teil 1x1,5 am Ende jedoch immer variiert.

Gibt es hier vielleicht etwas, um eine Suche durchzuführen die da etwa lautet:
Scanne die ganze List, schaue welche Zeichenfolgen ungefähr öfters vorkommen und gib mir an, wie oft dies vorkommt.

Möglichkeit neben Powershell liegt noch in Oracle SQL.

Vielen vielen Dank im Voraus!

Viele Grüße
Kraehahn

Content-ID: 346239

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

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

133883
133883 14.08.2017 aktualisiert um 10:18:44 Uhr
Goto Top
und Group-Object funktioniert auch nicht, da zwar der Teil "H07V-K" oft vorkommt, der Teil 1x1,5 am Ende jedoch immer variiert.
Du scheinst nicht zu wissen daß du bei group-object auch geschweifte Klammern ({}) und Regex für eine Gruppierung verwenden kannst face-wink.
Und bei Regex braucht man keinen festen Begriff sondern arbeitet mit Mustern. Wobei es hier möglicherweise ausreicht einen Split am Leerzeichen zu machen wenn alle Artikel auf diesem Muster wie ml oben basieren.

Gruß
Kraehahn
Kraehahn 14.08.2017 um 15:12:07 Uhr
Goto Top
Hey,
vielen Dank für deine Antwort!

Ich habe mal mit deinen Ansätzen nun etwas gearbeitet aber festgestellt,
dass ich damit nicht zum Ziel komme.
Das mit dem Split hat schonmal ganz gut funktioniert.
Bei den Bezeichnungen

H07V-K1x1,5
NYM-J3x1,5
NYY-J5x6

gibt es das Muster, dass diese immer definiert sind durch '-' und 'x'.
Also habe ich nun einfach beide Zeichen durch 20 Punkte ersetzt und lasse mir mit Substring nur insgesamt 20 Zeichen anzeigen und füge das Ganze dann mit Group-Object zusammen.
Somit erhalte ich dann
H07V........
NYM.........
NYY..........

was mir in dem Fall auch reicht.
Aber der Großteil der Artikel verläuft nach keinem solchen Muster.
Hier steht einfach nur
US3K20FT
US3K40FT
US3K60FT
WJ-DM20/2X6
WJ-DM20/4X5
WJ-DM20/5X4
SSM20LA
SSM25FV
SSM40FV

Im Grunde genommen gibt es immer mehrere ähnliche Muster, sprich 10 Artikel beginnen mit US3K, andere 10 mit WJ-DM20.
Es geht aber hier um 10.000 Artikel.
Wenn ich mir die nun einzeln anschauen und definieren müsste, wäre ich von Hand ja schneller fertig.

Deshalb suche ich mehr nach einem Operator, der quasi sagt: prüfe jeden Artikel der Liste auf Zeichenfolgen von mehr als x-Zeichen, die mehrmals in der ganzen Liste auftreten.
Ohne, dass ich vorher ein Muster definieren muss, wie der Artikel bzw. die Zeichenfolge auszusehen hat (wie gesagt bei 10.000 Artikeln unrentabel).

Vielleicht gibt es sowas auch garnicht oder übersteigt schlichtweg meine Fähigkeiten.

Trotzdem nochmal und schonmal danke für weitere Antworten!
133883
133883 15.08.2017 aktualisiert um 18:55:54 Uhr
Goto Top
Wenn du überhaupt keine Liste mit Mustern hast, ist das fast nicht möglich oder wenn dann nicht 100% zuverlässig, denn wer kann schon erraten welche Artikel zusammengehören wenn sich die Bezeichnungen mal mehr unterscheiden du müsstest also sowieso alle Artikel zumindest nachkontrollieren. Was man machen kann ist ein Änlichkeitsvergleich (Levenshtein-Distanz) bei dem man definiert wie viele Buchstaben sich max. ändern dürfen wenn man zwei Namen vergleicht, das wäre noch machbar. Dafür gibt es schon Powershell-Funktionen.

Warum, wenn das 10000 Artikel sind, wurden die Artikel nicht mit Fremdschlüssel versehen der die Gruppe definiert? Welcher Hempel macht denn heute noch sowas?? Anfänger ohne Datenbankerfahrung?!
Kraehahn
Kraehahn 18.08.2017 um 08:52:03 Uhr
Goto Top
Hallo nochmal,

und danke nochmals für deine Antwort! Die Funktion werde ich mir mal anschauen.

Es ist nicht eine Liste mit 10.000 Artikeln sondern genau genommen sind diese in 8 verschiedene Artikel-Gruppen unterteilt.
Aber trotzdem sinds dann manchmal noch bis zu 2.000 Artikel pro Gruppe. Und 8x 1.000 - 2.000 Artikel manuell auswerten oder 1x 10.0000 ist ja der gleiche Aufwand. Aber ich schaue es mir mal an.

Vielen Dank nochmal!!

Viele Grüße