Datastore Writer schreibt nichts weg obwohl Quell-Spreadsheet gefüllt ist

Hallo zusammen,

wir wollen in Plenty Aufträge anlegen. Dazu verwenden wir die benötigte Konstellation aus einem Master- und Child Datastore.
Seit wir einen Filterbedingung geändert bzw. eingefügt haben, werden keine Daten mehr in den Child Datastore reingeschrieben.

Der Filter checkt ein Feld aus einem Mapper, wo per Querverweis die Auftragsnummer geprüft wird. Ist diese vorhanden wird diese in das Feld reingeschrieben. Ist der Auftrag noch nicht vorhanden enthält das Feld ‚No Record found‘.
Die darauffolgende Filterbedingung sieht wie folgt aus: SchonVorhanden! == ‚No Record found‘

Aus dem positiven Output werden die Daten dann in zwei separaten Mapper aufbereitet und anschließend per Datastore Writer weggeschrieben.

Das ganze sieht dann so aus:

Wie oben beschrieben werden die Daten allerdings für den Child DS nicht weggeschrieben obwohl der Child-Datastore Mapper Daten enthält.

Der identifier und master_identifier werden dabei eigentlich auch befüllt.
Komischer weise werden die Daten in der Vorschau normal angezeigt bzw. suggerieren dass die Daten reingeschrieben werden konnten.
image

Kann mir hier vielleicht jemand beantworten warum der zweite DS Writer nicht in der normalen Ausführung funktioniert ?

Viele Grüße
Oliver

Hallo Oliver,

Das Problem ist vermutlich, dass die Filter und Mapper Steps (im Normalfall) „lazy“ ausgeführt werden, d.h. sie werden nur dann ausgeführt wenn das Ergebnis von einem Step verwendet („konsumiert“) wird. Wird ein Ergebnis mehrfach verwendet, dann werden die Mapper / Filter Steps mehrfach durchlaufen.

In eurem Fall passiert folgendes:
Der DatastoreWriter (Step 19) verwendet das Ergebnis von Step 17. Alle vorherigen Filter / Mapper werden durchlaufen und erzeugen das verwendete Spreadsheet, welches dann in den Datastore geschrieben wird (unten im Screenshot 1. , linke Seite).

Bei der Ausführung des 2. DS Writers passiert dann folgendes:
Es wird die gesamte Filter / Mapper Kette ab Step 14 nochmal durchlaufen (unten im Screenshot 2. , rechte Seite). Dadurch das die Master-Datensätze dann schon im Datastore vorhanden sind, kommt im Querverweis aber nicht mehr „No Record found“ raus. Die Zeilen werden im Filter entfernt, da die Bedingung nicht mehr zutrifft und am Ende werden keine Childs geschrieben.

Das liegt leider daran, dass die Daten in der Vorschau nicht in den Master DS geschrieben werden. In der Vorschau kommt bei Querverweis auch wirklich „No Record found“ und die Zeilen werden nicht gefiltert.

Ich hoffe die Erklärung ist einigermaßen verständlich.
Die Lösung sollte recht simpel sein. Aktiviere mal im Mapper mit dem Querverweis (Step 14) die erweiterte Einstellung cacheMode. Danach wird das Ergebnis dieses Mappers „gespeichert“ und von allen nachfolgenden Steps verwendet.

Viele Grüße
Torsten

2 Likes

Hi @synesty-Torsten ,

vielen Dank für die Ausführliche Antwort.

Ich werde es gleich mal ausprobieren

1 Like