Zeichenbeschränkung für MAP-Spaltenschema

Hi Team,


konntet Ihr hier schon einen Grund für das Verhalten rausfinden?


VG,

Marc

Sorry für die späte Antwort.


Leider können wir aktuell nur einen Workaround mit RegEx anbieten.

Das Problem sitzt leider sehr tief und wir haben leider noch keine Lösung.


Kannst du uns ggf. mal einen Beispielwert einer solchen Eigenschaft vom Typ TEXT schicken? Vielleicht können wir dann bei der RegEx assistieren.


Guten Morgen,


im Anhang als Fallbeispiel einer der problemhaften Einträge.

Hallo Marc,


vielen Dank für dein Beispiel. Wie schon geschrieben sitzt die Ursache für das Problem recht tief, sodass wir vermutlich länger für einen Fix benötigen werden.


Als Workarround kannst du folgende Freemarker Anweisung im Wert Feld verwenden:


<#assign res = result['Beispiel']?matches("685=(.+?)(?=;\\d+=|$)")><#list res as m>${m?groups[1]}</#list>


Das result['Beispiel'] kannst du mit deinem Spaltennamen ersetzen und die 685 durch die entsprechende ID für die du den Wert erhalten willst.



Hallo Marc,


vielen Dank für dein Beispiel. Wie schon geschrieben sitzt die Ursache für das Problem recht tief, sodass wir vermutlich länger für einen Fix benötigen werden.


Als Workarround kannst du folgende Freemarker Anweisung im Wert Feld verwenden:


<#assign res = result['Beispiel']?matches("685=(.+?)(?=;\\d+=|$)")><#list res as m>${m?groups[1]}</#list>


Das result['Beispiel'] kannst du mit deinem Spaltennamen ersetzen und die 685 durch die entsprechende ID für die du den Wert erhalten willst.



Vielen Dank, der Workaround funktioniert bei uns einwandfrei.


VG,

Marc

Danke für die Rückmeldung. Wir haben jetzt auch einen ersten internen Entwurf für einen Fix. Diesen testen wir in den nächsten Tagen.

Wenn alles glatt geht, dann wird es so sein, dass vermutlich eine neue Spalte VariationPropertiesJSON aus dem Plenty-Step herauskommen wird. Bei dieser Spalte wird dann die MAP intern anders behandelt, so dass diese auch bei komplexen HTML-Strukturen nicht kaputt geht. Damit sollten dann VariationPropertiesJSON.at("meinAttribut") immer klappen.


Die bisherige Spalte VariationProperties können wir leider nicht mehr retten. Die bleibt so erhalten, aber ist - bei komplexem HTML-Inhalt - kaputt. Aber die ist ja bei vielen Kunden im Einsatz, und bei wem jetzt mit simplen Key-Value-Paaren funktioniert, der kann es auch weiterhin nutzen.


Wir melden uns hier mit einem Update in den nächsten Tagen.

Die Lösung per JSON erscheint mir super, schön dass die so schnell kommen soll.


Bis dahin Ergänzung zum Workaround oben: der matcht nicht nur auf "685=", sondern auch auf "1685=" u.ä. (bei mir konkret: auf 13 statt 3).


Ich habe selbst nur begrenzt Ahnung von RegEx, aber Stack Overflow sei dank trotzdem eine Lösung ;-)


(?:^|;) matcht für "entweder Start des Strings, oder Semikolon", so dass mit

<#assign res = result['Beispiel']?matches("(?:^|;)685=(.+?)(?=;\\d+=|$)")><#list res as m>${m?groups[1]}</#list>

tatsächlich nur Property 685 ausgegeben wird, und keine Verkettung von allen IDs die auf 685 enden.


Gruß & schönes WE,

Daniel

Hallo zusammen,


seit heute sind die beiden neuen Spalten für die Varianten-Eigenschaften im JSON Format verfügbar (VariationPropertyIDsJSON und VariationPropertiesJSON). Wie schon weiter oben beschrieben könnt ihr auf einzelne Werte über


${VariationPropertyIDsJSON.at("ID Eigenschaft")} 


bzw.


${ VariationPropertiesJSON.at("Backendname Eigenschaft")}


zugreifen.


Wir haben uns dazu entschieden vorerst nur für die Varianten-Eigenschaften neue Spalten im JSON Format zur Verfügung zu stellen. Solltet ihr Probleme mit anderen MAP Spalten haben, könnt ihr euch gerne bei uns melden.


Viele Grüße

Torsten

Guten Morgen,


ich muss leider nochmal auf das Thema zurück kommen. Wir haben gestern die Quellen der Datastore-Spalten entsprechend angepasst, um die neuen Felder zu nutzen, siehe Bild.


image


In der Schema-Validierung erhalte ich nun aber auch Fehler aufgrund eines zu großen Map-Keys bei diversen Varianten:


image


Möchte ich auf diese Key-Value-Paare per


${VariationPropertyIDs.at("517")!}

zugreifen, wird ebenfalls wieder die Warning geschossen, das der Map-Key auf 255 characters limitiert ist, siehe Eventlog zu RunID


0b574e42-f39c-11ea-a408-901b0ed5b6cc

Nachtrag: Die genannte RunID ist falsch weil noch vor dem Update der Felder im Datastore gelaufen. Diese hier ist von heute morgen NACH Update des Datastores:


498c5eef-f3f3-11ea-95d4-901b0ea49fee

Die Einstellung im Datastore haben wir vergessen zu erwähnen:


Schau mal, dass du die Spalte im Schema auf Art des Inhalts=JSON umstellst.


Wir reichen das auch noch im Handbuch nach.

Danke euch, das Schema ist wieder sauber, der Flow problemlos durchgelaufen.


Nächster Fall (ich komm mir langsam doof vor, sorry):


image



Abfrage per Filter ob Key vorkommt, falls ja Ausgabe des identifiers und schreiben einer .csv führt zu folgendem Flow-Error:


Fehler beim Anwenden des Filters auf das Spreadsheet. (Root Causes: JsonMappingException: Can not deserialize instance of com.synesty.csvconverter.internal.spreadsheet.SynestyMap out of VALUE_NUMBER_INT token at [Source: java.io.StringReader@60fbbb8; line: 1, column: 1] _TemplateModelException: Java method "com.synesty.csvconverter.internal.spreadsheet.AbstractField.containsKey(String)" threw an exception when invoked on com.synesty.csvconverter.internal.spreadsheet.ColImpl object "547=https://www.werkstatt-king.de/marken/dewalt"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #if (VariationPropertyIDs.containsKey... [in template "RowFilterExpression VariationPropertyIDs.containsKey('515')" at line 1, column 1] ----)

Sorry für den Ärger kurz vorm Wochenende. Kann es sein das in der Spalte ( VariationPropertyIDs ) im Datastore noch Werte im alten MAP (nicht JSON ) Format vorhanden sind ? Evtl. von alten / gelöschten Varianten, die nicht nochmal abgerufen wurden.


Der Gedanke kam mir eben auch, da ich die neue Quelle mit der bestehenden Spalte verknüpft hatte. Und ja, das war der Grund!


Danke euch, schönes Wochenende!


Gruß,

MArc

Hallo zusammen,


ich komme auf das Angebot von Torsten zurück:

Wir haben uns dazu entschieden vorerst nur für die Varianten-Eigenschaften neue Spalten im JSON Format zur Verfügung zu stellen. Solltet ihr Probleme mit anderen MAP Spalten haben, könnt ihr euch gerne bei uns melden. 

Für die alten Artikelmerkmale "ItemProperties" und "ItemPropertiesWithGroups" aus Plenty-Step "PlentyGetVariations" bräuchten wir ebenfalls neue Outputs vom Typ JSON. Wäre das kurzfristig machbar?


Gruß,

Marc


Hallo Marc,


das können wir (wie versprochen) kurzfristig einbauen. Ich denke dass wir es bis spätestens morgen schaffen.


VG Torsten

Hallo Marc,


die beiden Spalten ItemPropertiesJSON & ItemPropertiesWithGroupsJSON sind jetzt vorhanden.


Viele Grüße

Torsten

Ist hier irgendwas im Parsing zerbrochen @synestysupport?
Ich will den Wert der Eigenschaft 150 ermitteln:

  • direkt mit at() funktioniert nicht :x:
  • at() mit parseJSON funktioniert nicht :x:
  • parseJSON mit Array-Zugriff klappt :white_check_mark:

Danke Daniel

Hi Daniel,

Fall 1:

Das sollte funktionieren (habe es auch gerade nochmal getestet). Voraussetzung ist, dass der input des Mappers das Ergebnis-Spreadsheet des PlentyGetVariations Step ist

Fall 2:

Das hat meiner Ansicht nach noch nie funktioniert, da auf das Ergebnis von parseJSON nicht mit at zugegriffen werden kann (siehe auch parseJSON auf einen String (aus einem Datastore))

Über die parseField Template Funktion würde das gehen. Ist ziemlich umständlich und deshalb nicht zu empfehlen :
${parseField(VariationPropertyIDsJSON, "MAP","JSON","","").at("150")}

Fall 3:

Wenn du das PlentyGetVariations Ergebnis nicht direkt verwendest, ist das auch die einfachste Möglichkeit den Wert zu erhalten.

VG Torsten

1 „Gefällt mir“