Nicht mehr existierende Artikel löschen

Hallo, ich benötige einen Denkanstoß bzgl. der Artikellöschung.
Zwei Szenarien:

  1. Artikel werden aus System 1 in den Datastore geschrieben und in System 2 importiert oder aktualisiert, wenn schon vorhanden in System 2. Jetzt sollen natürlich auch die Produkte in System 2 gelöscht werden, die aus System 1 nicht mehr in den Datastore übertragen werden.
    Reicht es hierfür aus die „untouchedRecords“ aus dem SpreadsheetDatastoreWriter zu nutzen?

  2. Zusatzinformationen werden als CSV-Feed heruntergeladen, mit dem Datastore abgeglichen (LookupFilter) und die existierenden Artikel mit diesen Zusatzinformationen in System 2 aktualisiert. Pro betroffenem Artikel gibt es eine Zeile in der CSV-Datei. Wenn ein Artikel in der CSV-Datei nicht mehr existiert, soll die Zusatzinformation in System 2 gelöscht werden. Wie bekomme ich hier den Zugriff auf die nicht existierenden Einträge in der CSV hin?

Vielen Dank vorab!

Hallo @okdesigns,

zu 1. Genau so wie du es beschreibst. Wenn aus dem System 1 immer alle Artikel abgeholt werden und dem entsprechende nicht mehr ausgegebene Artikel als gelöscht gelten, kannst im anschließenden DatastoreWriter den Output „untouchedRecords“ nutzen. Zusätzlich kannst du gleich noch einen DatastoreWriter mit dem Input „untouchedRecords“ nutzen um diese Datensätze im Datastore als zum Beispiel „MARK_DELETE“ zu markieren.

zu 2. Verstehe ich noch nicht ganz. Du verwendest den LookupFilter, dieser hat auch einen negativen Output, der dir die Datastoreeinträge ausgibt, die nicht in der CSV vorhanden sind. Dadurch kannst du ja dann System 2 einen ${_emptyValue} übergeben. Weiß aber nicht ob das System 2 auch verarbeiten kann. Vielleicht funktioniert auch null, 0, -1
Was ist denn System 2?

Viele Grüße
Lukas

Moin @synesty-Lukas,

perfekt, dann probiere ich das so aus. zu 2. dachte ich es so verstanden zu haben, dass er als negativen Output die Zeilen der CSV zurückgibt, die nicht im Datastore existieren - also genau andersrum.

Hallo @okdesigns,

sorry, mein Fehler. Du hast natürlich Recht. Dann würde mein nächster Gedanke auch nicht funktionieren mit einem Querverweis auf den Datastore, da ja die Zeilen im Quellspreadsheet fehlen.

Dann kannst du das analog auch wie im 1. Punkt lösen, dass du den Datastore mit DatastoreWriter updatest, dabei reichts wenn du lediglich einen der drei identifier angibst. Voraussetzung ist natürlich dass in einem der drei identifier aus ein Wert aus der CSV steht.

Falls das auch nicht geht, wäre meine letzte Idee, dass du neben dem CSVReader noch ein SearchDatastore machst, dabei musst du aber in beiden Spreadsheets eine Spalte mit dem gleichen Namen haben. Anschließend nimmst du einen SpreadsheetAppend und fügst beide zusammen. Danach noch ein Mapper und gruppierst an der gemeinsamen Spalte. Neben der gemeinsamen Spalte fügst du eine Hilfsspalte ein und sagst bei der Aggregatfunktion „Zeilen zählen“. Wenn dabei nur eine Zeile gezählt wird, weißt du, dass dieser Artikel nicht im Datastore vorkommt. Danach kannst du filtern.

Viele Grüße
Lukas

Hi @synesty-Lukas,
hab das Ganze jetzt mal getestet. Passt soweit. Den 2. Punkt habe ich jetzt anders gelöst.
Kannst du mir noch sagen wie man ein Produkt auf Shopify (System 2) komplett löschen kann? Finde aktuell nur die Möglichkeit, Produkte zu archivieren.