Filter mit Nummernvergleich scheitert auf einmal mit "Expected a string [...] but this has evaluated to a method"

Hallo,

mein Flow SH_overpaidOrders scheitert auf einmal bei einem Filter mit Bedingung


difference!?number > 0.1


mit einem herzlichen


Step: Unknown [Unknown] Fehler beim Anwenden des Filters auf das Spreadsheet. Der Datentyp des Werts weicht vom erwarteten Typ ab. (Root Causes: NonStringException: For "?number" left-hand operand: Expected a string or something automatically convertible to string (number, date or boolean), but this has evaluated to a method (wrapper: com.synesty.csvconverter.internal.utils.TemplateModelRegistry2$5): ==> difference! [in template "RowFilterExpression difference!?number > 0.1" at line 1, column 7] ---- FTL stack trace ("~" means nesting-related): - Failed at: #if (difference!?number > 0.1) [in template "RowFilterExpression difference!?number > 0.1" at line 1, column 1] ----)


Obwohl in der Spalte Difference (für OderID 653231, mit der es failt) der Float 2.59 steht. Errechnet aus ${OrderHeadPaidAmount?number - OrderHeadTotalInvoice?number}.


Hat sich hier was geändert, was mach ich falsch, woher die neue Fehlermeldung?

Ich hab extra ne CSV abgegriffen jetzt: da sieht alles okay aus.


Danke & Gruß,

Daniel

Hallo Daniel,


seit kurzen gibt es eine Hand voll neuer Freemarker Template Funktionen eingeführt.

Eine davon ist "difference" (Differenz aus der Mengenlehre) und erwartet 2 Listen bzw. Strings. Vermutlich wird der Variablenname als diese Funktion erkannt.

Bitte benenne die Variable mal um und schaue ob dann alles wieder läuft wie vorher.


https://apps.synesty.com/transformy?action=showTemplateFunctionDocumentation&target=functions#difference



Viele Grüße,


Rocco

Kurze Ergänzung: das ganze ist natürlich ein Bug und wir überlegen uns eine Lösung, um das zukünftig zu vermeiden.

Kurzfristiger Workaround ist der oben vorgeschlagene. Die Spalte difference muss in irgendetwas umbenannt werden, so dass es anders heißt als die Template-Funktion "difference".



> Eine davon ist "difference"

Picard-Hand-an-Kopf.jpg


Klar, das erklärt die Fehlermeldung, pass ich an, danke!

Das Problem ist jetzt behoben. Die Funktionen überlagern jetzt nicht mehr die Spalten, sondern die Spalten "gewinnen".

Einen Hinweis zu diesen Namenskonflikten haben wir auf die Doku-Seite der Template-Funktionen gepackt.


Um in deinem Fall die Spalte "difference" von der Funktion "difference" zu unterscheiden, kannst du jetzt ${_syn.difference(..)} schreiben, um die Funktion zu erwischen.