Wenn der Datastore nicht utopisch groß ist, dann könnte folgender Freemarker Filter helfen:
"1,2,3"?split(",")?seq_contains(identifier!)
1,2,3 wären die gesuchten Identifier.
Ergebnis:
Diese Suche ist technisch das gleiche wie ein SearchDatastore + Filter Step.
Man kann das auch mit anderen Spaltennamen machen. Auch Kombinationen sind möglich.
D.h. was genau ist jetzt das Problem?
Reichen die 200 Datensätze im Ergebnis nicht?
Dauert es zu lange?
Das ging leider noch nicht so klar aus Ihrer Nachricht hervor? Dann können wir mal überlegen, ob wir eine Lösung finden.
Ok, sorry, wir hatten Sie falsch verstanden und jetzt gesehen, dass sie sich explizit auf den SearchDatastore-Step beziehen. Wir hatten es gedacht es geht um die Suche im Backend.
Wir diskutieren mal Ansätze. Vorherige Nachricht bitte ignorieren.
Nach erster interner Rücksprache geht es in Richtung eines neuen Steps für diesen Anwendungsfall.
Könnten Sie uns noch etwas Input für die Planung geben?
1. In welcher Form liegen die Identifier vor (
a) z.B. als String, komma-getrennt, oder
b) als Spreadsheet in einer bestimmten Spalte)
2. Brauchen Sie diese Funktionalität eher nur beim Debugging / Entwickeln, oder ist das auch bei echten Flow-Ausführungen gebraucht?
3. Können Sie uns ein Beispiel-Szenario beschreiben, bei dem Sie so etwas machen?
Das würde uns bei der Planung helfen.
Vielen Dank
Danke für das Feedback.
Ja dieser check ist in der Tat worst-case, da er bei jeder Iteration neu evaluiert wird.
Ein Boost wäre wie folgt möglich:
1. Schreiben Sie sich die IDs vorher in einen TextHTMLWriter (dadurch wird der die Schleife nur ein einziges mal durchlaufen, um den String aufzubauen):
<#list spreadsheet@SpreadsheetMapper_36.getRows() as row><#if row.get("id")?trim != "">${row.get("id")}<#sep>,</#sep></#list>
2. Im Filter machen sie dann stattdessen:
datastorename == "shopifyOrderItems" && outputDesTextHTMLWriters?split(",")?seq_contains(identifier2)
(Den delimiter ggf. anpassen, falls der Identifier auch Kommas enthalten kann. )
Wir haben in der Zwischenzeit einen neuen Step für den nächsten Sprint geplant, der Datensätze aus dem Datastore anhand eines identifiers abrufen kann.
Es gibt jetzt einen neuen Step SearchInDatastoreByIdentifiers.
Dieser Step sucht Datensätze in einem Datastore mit einem SPREADSHEET, das einen identifier (1-3) enthält.
Das Ergebnis ist ein Spreadsheet mit den gefunden Datensätzen.
Zu den Besonderheiten gehört:
- leere identifier in der Quelle werden ignoriert
- doppelte identifier in der Quelle werden nur einmal gesucht
- gibt es bei identifier2 und identifier3 (diese beiden identifier sind nicht unique) mehrere Treffer im Datastore , dann werden alle Treffer ausgegeben.
Das ist z.B. ein Unterschied zum Querverweis der nur den "ersten" Treffer finden würde.
Wir freuen uns über Feedback.