Exportieren aus der Datastore-Ansicht mit einer langen Filterbedingung

Hallo,

ich suche öfters mal anhand einer Liste von Artikelnummer nach Einträgen in einem Datastore, sowas wie [1006282,1006281]?seq_contains(sku?number). Danach benutzt ich meistens die Export-Funktion und arbeite mit der gefilterten Liste in Excel weiter.

Nun suche ich aber normalerweise nicht nach 2 skus, sondern einige hundert Nummern. Das zuletzt verwendete Freemarker-Skript besteht aus fast 5000 Zeichen. Wenn ich mit so einem langen Freemarker-Skript den Export als Datei auslöse, kriege ich nur einen blanken Tab in Chrome mit ERR_CONNECTION_CLOSED.

Im Moment benutze ich in solchen Fällen einen kurzen Flow, der die Daten aus dem relevanten Datastore holt, filtert und mir das Filterergebnis als Excelliste schickt. Damit komme ich zwar auch an die gewünschte Excelliste, es ist aber umständlicher als der Export in der Datastore-Ansicht.

Könnt ihr da irgendwas machen?

Wir nehmen das mal mit auf. Im Bereich Datastore gibt es gerade einige Umbauten.

Edit: Wir können da aber nur für die Spalten identifier1-3 etwas machen. Alle anderen Spalten sind nicht indiziert und da ist Freemarker und Flow der einzige Weg.

identifier1-3 Filter

Was möglich theoretisch (ungeprüft) wäre ist, dass man erlaubt bei den jetzigen identifier1-3 Filtern mehrere identifier pro Zeile einzugeben. Da haben wir technisch auch Möglichkeiten sehr schnell zu suchen… quasi wie bei unserem Step SearchInDatastoreByIdentifiers

Für alle anderen Spalten ist ein Flow die bessere Möglichkeit. Wenn das jetzt schon im UI kracht, dann klingt das eher nach Flow. Alles was länger dauert klingt eigentlich nach Flow.

Aber wir machen uns mal Gedanken. Vielleicht finden wir ja noch einen anderen Weg.

Okay, mit der Suche über identifier wär ich auch schon zufrieden. SKU ist bei uns einer der identifier. Ich gehe nur den Umweg über Freemarker, da man in den identifier-Feldern nicht nach mehreren komma-getrennten Werte suchen kann.

Nur nochmal zur Klarstellung: Der Export verabschiedet sich nicht, weil die Evaluation des Freemarker-Skripts zu lange dauert. Die Suche in der Datastore-Ansicht selbst funktioniert einwandfrei. Ich glaube, es liegt einfach daran, dass der URL der GET-Request (für den Export nach Excel) irgendein Zeichen-Limit sprengt. Der Filterausdruck wird dort ja als Teil des URLs übergeben.

Hier ein Beispiel. Ich prüfe, ob 8000 Zeichen Text irgendwo ein „a“ enthalten.


Die Suche selbst funktioniert einwandfrei (POST-Request), aber wenn ich den Export benutze, verabschiedet sich Synesty direkt.

Langer_Text?contains("a")

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu venenatis ex. Nam ornare lobortis ex, sit amet congue libero luctus nec. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec elementum urna. Sed ante metus, rhoncus vitae ex a, placerat fermentum tellus. Vestibulum eu urna consequat, cursus enim ut, fermentum orci. Nunc eu interdum ipsum, sit amet dignissim dolor. Nam volutpat malesuada varius. Nam porttitor eleifend venenatis. Fusce ac elementum tellus.

Integer luctus ante at quam bibendum porttitor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec sapien mauris, hendrerit id consectetur in, ultrices vel augue. Nam vitae odio ac lacus imperdiet lacinia non eget turpis. Phasellus tincidunt nunc nec metus pellentesque venenatis. Nulla maximus tellus nisi, a laoreet lectus fringilla in. Maecenas auctor felis vel lorem interdum, vel ullamcorper ligula malesuada. Donec accumsan sodales mauris, vitae commodo purus tempus at. Vestibulum tincidunt, purus sed vehicula blandit, urna ipsum sollicitudin mi, sagittis posuere lectus lectus vel enim. Integer sed tortor dapibus, viverra ex vel, scelerisque ex. Ut a orci fringilla, condimentum nibh non, luctus est. Aliquam sem sem, interdum sit amet ornare dignissim, consequat quis dui. Nullam congue dapibus purus et aliquam.

Phasellus posuere semper tristique. Mauris semper convallis ligula a malesuada. Aliquam sem nibh, finibus ut ullamcorper sed, sollicitudin in eros. Praesent ornare nunc non felis cursus scelerisque. Integer eu sapien nec leo rhoncus luctus auctor vitae libero. Curabitur feugiat orci mi, pellentesque faucibus orci semper pellentesque. Nullam porttitor commodo velit.

Donec id odio nulla. Nam imperdiet vel arcu vel consectetur. Vivamus at tempus nibh. Mauris sodales lectus et lorem fringilla, a finibus nisl interdum. Sed luctus sed ante id feugiat. Proin feugiat, urna id dignissim tincidunt, nisl mauris vehicula odio, semper dignissim est ex quis urna. In auctor pellentesque nisl, quis cursus dolor condimentum nec. Nulla rutrum dolor ut tortor egestas blandit. Aliquam vel molestie neque. Cras sit amet tellus ac tortor malesuada interdum. Aliquam dignissim blandit quam sed feugiat. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

In hac habitasse platea dictumst. In vel elit dolor. Maecenas dapibus orci id eleifend pharetra. Suspendisse potenti. Morbi pulvinar nisi a vehicula tincidunt. Sed a odio sem. Aliquam erat volutpat. Donec quis luctus felis. Aliquam augue tortor, luctus in libero a, dictum pellentesque enim. Aenean consequat at sapien vel tempor. Suspendisse lectus magna, sollicitudin at mollis quis, consequat a arcu. Praesent nec mi viverra felis tempus convallis eget eu dui.

Integer eleifend erat id augue pulvinar tristique. Duis suscipit sapien justo, eu tincidunt nisi finibus a. Proin vitae urna nec ligula sodales mollis. Etiam purus erat, scelerisque et tortor a, aliquam ultrices odio. Etiam posuere augue enim, sit amet tristique dui pulvinar nec. Maecenas pharetra blandit nisl. Maecenas feugiat leo lobortis lectus blandit, vitae rhoncus odio pellentesque. Aliquam sed sem in dui placerat vehicula semper ac neque. Phasellus condimentum nisl tristique tortor pretium pulvinar. Cras elementum arcu ut ante ullamcorper placerat. Ut sodales at leo id egestas. Vivamus volutpat ut massa eu vestibulum. Pellentesque auctor dignissim risus et tempor. Fusce vulputate quam eget auctor interdum.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec blandit sem et lectus ultrices sollicitudin. Sed odio nisi, pretium sit amet magna quis, ornare scelerisque enim. Donec aliquam in mi vitae elementum. Nunc a felis eget dolor convallis semper ut sit amet lectus. Nullam laoreet maximus purus. Aliquam vitae ornare tortor. In et urna lacus. Donec dapibus fringilla mattis. In hendrerit mollis porta. Suspendisse nibh massa, cursus vel sapien non, finibus ullamcorper libero. Nulla rutrum aliquet tortor, ut porttitor ante malesuada sit amet. Cras eu suscipit lacus.

Aliquam accumsan tellus orci, nec bibendum orci tincidunt eu. In nec laoreet ante, sit amet vehicula diam. Cras ultricies magna nulla, et hendrerit quam malesuada eget. Proin luctus elementum mi eu vestibulum. Cras viverra nisl ac massa sollicitudin tristique. Aenean auctor orci eget diam scelerisque, ac efficitur sem ultrices. Curabitur viverra porta sapien, a elementum lorem feugiat vitae. Fusce non justo congue, hendrerit dui quis, efficitur magna. Donec interdum ante eu velit eleifend aliquet. Nam tempus mauris at pellentesque faucibus.

Duis vel auctor est. Nam viverra tellus at erat porta, eget fermentum nunc semper. Nunc condimentum feugiat gravida. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Phasellus eros urna, scelerisque pretium justo nec, tempus placerat lectus. In hac habitasse platea dictumst. Curabitur vel mattis ex, vel mollis orci. Vestibulum vitae ligula lobortis, aliquet augue eu, tempus nibh. Phasellus convallis maximus maximus. Pellentesque suscipit turpis sed quam pellentesque, commodo auctor tortor consectetur. Sed consequat elit eget erat faucibus, interdum molestie magna vestibulum. Ut non justo porttitor, condimentum est sed, pretium velit. Quisque condimentum volutpat sem, ac dignissim lectus.

Quisque gravida commodo ullamcorper. Nunc tempus diam eget tellus faucibus, a condimentum urna pellentesque. Integer a scelerisque lacus, at fringilla purus. Donec eget urna id est ultricies tempor sodales sit amet nibh. Cras pellentesque mauris posuere magna lacinia, quis cursus nunc varius. Duis aliquet, augue aliquam accumsan varius, est urna finibus quam, quis faucibus diam lorem ut quam. Fusce eget tempor dolor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris aliquam eros sed hendrerit mattis.

Proin varius quam vitae lobortis ultricies. In lacinia, nulla et semper venenatis, enim lacus fringilla est, et semper sem massa venenatis nulla. Etiam vel aliquam nisl. Quisque dignissim nulla ut magna viverra, cursus sollicitudin libero facilisis. Aliquam vel tortor ac orci congue maximus ut a ligula. Fusce ipsum erat, efficitur et dapibus id, condimentum eget nisl. Vestibulum at odio in justo sagittis dapibus non in nisi. Donec lobortis interdum tortor sit amet dignissim.

Donec et dapibus ipsum. Donec laoreet faucibus accumsan. Fusce pharetra egestas neque, sed malesuada risus blandit quis. Proin et quam tempus, blandit dui vitae, volutpat quam. Vestibulum id feugiat erat, id interdum urna. Suspendisse id blandit velit. Vestibulum vel urna arcu. Curabitur nunc odio, porttitor ut quam feugiat, commodo rhoncus neque. Nullam tristique iaculis tellus. Maecenas quis odio tellus.

Nam et rutrum libero. Suspendisse in tellus euismod odio mollis tempus. Aliquam tristique bibendum lacus a placerat. Cras at lacus fringilla, commodo purus nec, vehicula lacus. Donec gravida commodo nulla, eu pharetra risus malesuada a. Mauris ac urna sed tortor pharetra feugiat sit amet ut ante. Fusce condimentum ipsum a lacus sodales interdum. Fusce elit diam, feugiat vel dictum ac, sagittis vel lorem. Integer tincidunt venenatis dui, vitae laoreet quam vestibulum et. Nulla quis lacus at arcu fermentum euismod cursus vel tortor. Praesent vulputate libero id ex lacinia, ac scelerisque diam molestie. Phasellus ac justo in quam pellentesque mattis. Etiam non ullamcorper arcu. Curabitur ut suscipit eros.

Morbi eros neque, pulvinar sit amet risus in, ultricies viverra ante. Curabitur in mauris justo. In volutpat turpis vitae lorem tristique egestas. Nulla tincidunt felis eu sagittis consectetur. Mauris dictum lectus et elit aliquet finibus. Aliquam sollicitudin pellentesque tortor a aliquam. Curabitur mollis, nulla accumsan egestas convallis, magna tortor malesuada nunc, eu imperdiet felis mauris vitae urna. Cras diam metus, blandit ac bibendum venenatis, pulvinar id."?contains(„a“)

Ah ok, danke für die Klarstellung. Wir nehmen das mal mit auf.

Kannst du auch mit einer Trennung nach Zeilenumbrüchen statt Komma leben?
Weil leider erlauben wir auch Komma bei den identifiern… und dann müsste man das UI wieder erweitern und den Trenner auswählbar machen. Da Enter im identifier nicht erlaubt ist, könnten wir aus dem Eingabefeld ein Textfeld machen, welches auch Zeilenumbrüche erlaubt und dann könnten wir automatisch erkennen, ob du einen oder mehrere Werte eingibst.

Klar, Zeilenumbrüche sind eigentlich sogar besser. Meist sind die Einträge anfangs sowieso in einzelnen Zeilen und ich forme das dann für Freemarker zu der komma-separierten Liste um. So kann man direkt eine Spalte aus Excel ins identifier-Suchfeld kopieren.

1 „Gefällt mir“

Habe grade nochmal drüber nachgedacht. Die Erweiterung des Identifier-Feldes auf eine mehrwertige Suche alleine löst das Problem noch nicht.

Wenn ich meine Liste an SKUs in das Identifier-Feld werfe, würde das auch den Rahmen der GET-Request sprengen. Da die Liste an SKUs nur marginal kürzer ist als das Freemarker-Skript, gibt’s hier dasselbe Problem wie bei dem Freemarker-Ausdruck. Die Daten werden ja in beiden Fällen als Teil von URL übertragen. Als Test habe ich einfach mal den ganzen „Lorem ipsum…“-Text von oben ins identifier-Feld geworfen, da verhält sich Synesty genau wie bei dem Freemarker-Skript.

Vielleicht habt ihr das schon auf dem Schirm, wollte es trotzdem kurz erwähnen.

Ja wir haben das auf dem Schirm und ist uns dabei auch aufgefallen. Die Multiline-Filterung funktioniert in der Entwicklung schon. Leider ist die Stelle mit GET einen Tick aufwändiger, weil es da um einen Dateidownload geht. Gehen wir nächste Woche noch mit an.