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.
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.
Kann mir hier vielleicht jemand beantworten warum der zweite DS Writer nicht in der normalen Ausführung funktioniert ?
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.