Frage zur Sortierung

Hallo zusammen,


wenn ich versuche Variantennummern Absteigend zu sortieren und diese Enthalten Text und Nummern, dann scheint die Sortierung nicht ganz zu stimmen.


Es scheint, als wenn im Mapper nur das gesamte Wort erkennbar ist und dadurch die sortierung auch nach der ganzen Nummer erfolgt.

Es müsste beim sortieren doch aber jede Position gesehen werden.


GAL333 müsste demnach doch vor Gal1202 kommen.


Kann ich das irgendwie ändern, damit es korrekt dargestellt wird?


image


Grüße

Enrico


Halli Hallo,


ich habe mal ein wenig rumprobiert und bin auf folgenden Workaround gekommen


Sie brauchen für dafür 2 Spreadsheetmapper und eine Counter Variable (in meinem Fall "maxLength").


SpreadsheetMapper1:

image

Zwischenspalte: ${col0?replace("([\\D]+)([\\d]+)([\\D]*)","$2", "r")}

(Hier wird die eigentlich Nummer aus der Variantennummer rausgezogen. Das funktioniert unter der Annahme, dass links und rechts von der Nummer nur Alphabetische Werte stehen)


Sortieren Sie diesen Spreadsheetmapper absteigend nach der "length" Spalte.



Spreadsheetmapper 2:

image


lengthDif (errechnet die Differenz aus dem höchsten "length" Wert und dem "length" Wert der momentanen Zeile): <#if meta.maxLength.get() lt length>${meta.maxLength.inc(length?number) - length?number}<#else>${meta.maxLength.get() - length?number}</#if>


appendedNum (konkateniert den numerischen Teil der VarNr um die lengthDif um den Character '0'): ${Zwischenspalte}<#list 0..<result['lengthDif']?number as i>0</#list>


VariantennummerMod (fügt das ganze wieder Zusammen): ${Variantennummer?replace("([\\D]+)([\\d]+)([\\D]*)","$1${result['appendedNum']}$3", "r")}


Am Ende noch nach VariantennummerMod absteigend sortieren.


Ich hoffe ich konnte helfen.


Viele Grüße


Stefan Helme

Hallo Stefan,


vielen Dank für die Hilfe.

Sieht schon gar nicht schlecht aus.


Aber er scheint noch nicht alle Buchstaben zu entfernen, woran kann das leigen?

Das mit dem länge zählen funktioniert auch nicht ganz, da erhalte ich einen script error im Mapper.


image


Danke vorab und Grüße

Enrico


Hallo Enrico,


ich hab mir den Sachverhalt nochmal angeguckt und bin jetzt auf eine viel einfachere Lösung gekommen.

Du benötigst nur eine neue Spalte (bei mir "Zwischenspalte"). Nach dieser Spalte wird sortiert. Als Quelle verwendest du die Spalte mit der Varaintennummer.

Dort setzt du ein Mappingset:

image

0=a

1=b

2=c

3=d

4=e

5=f

6=g

7=h

8=i

9=j


So sieht dann am Ende das Ergebnis aus:

image

Ich hoffe ich konnte helfen!


Viele Grüße

Stefan

Hallo Stefan,


die Variante ist wirklich einfacher und scheint auch Großteils zu funktionieren.

aber anscheinend wird irgendwie die Zeichenlänge noch berücksichtigt.


Im unten stehenden Fall müsste GAL bei absteigender Sortierung vor GAd kommen, durch die längere Zeichenkette scheint die aber irgendwie darunter zu rutschen.


image


Hallo Enrico,


Setz mal in das Script Feld von Zwischenspalte folgenden Ausdruck: ${value?lower_case}


image


Viele Grüße


Stefan Helme


Hi Stefan,


Perfekt, danke ;)