Datastore: inhaltliche Änderungen kennzeichnen

Hallo Community,

ich habe eine Frage zu den Datastores:

Ausgangssituation:
Tabelle mit Artikeldaten in die eine csv mit neuen und auch schon identisch vorhandenen Daten importiert wird
Der Inhalt des Datastore wird als Artikelimport in ein Drittsystem geschrieben

Ablauf:
Durch ein neues csv-file ändern sich immer alle Einträge im datastore (–> „touched“) obwohl sich faktisch Inhalte nicht immer ändern

Ziel:
Datastore soll Einträge die sich inhaltlich nicht geändert haben irgendwie kennzeichen
→ Import in Drittsystem so schlank wie möglich halten und nur die Einträge mit der Kennzeichnung nutzen

Habt ihr Ideen wie man das umsetzen könnte? Vielen Dank schonmal für die Hilfe

Du könntest die alten Werte aus dem DS mit Querverweis dazu holen, und dann per Filter prüfen, ob sich die Spalten geändert haben :nerd_face:

Macht natürlich ab einer gewissen Anzahl von Spalten nur noch sehr wenig Spaß, aber bei ner handvoll geht das gut. Wir nutzen das ebenfalls, um Rück-Importe so schlank wie möglich zu halten.

Beispiel

old_IsVisibleInListIfNetStockIsPositive! != new_IsVisibleInListIfNetStockIsPositive! || old_IsInvisibleInListIfNetStockIsNotPositive! != new_IsInvisibleInListIfNetStockIsNotPositive! || old_StockLimitation! != new_StockLimitation! || old_IsVisibleIfNetStockIsPositive! != new_IsVisibleIfNetStockIsPositive! || old_IsInvisibleIfNetStockIsNotPositive! != new_IsInvisibleIfNetStockIsNotPositive! || old_IsAvailableIfNetStockIsPositive! != new_IsAvailableIfNetStockIsPositive! || old_IsUnavailableIfNetStockIsNotPositive! != new_IsUnavailableIfNetStockIsNotPositive! || old_IsHiddenInCategoryList! != new_IsHiddenInCategoryList!

Die Info ist dann halt nicht im Datastore hinterlegt, aber du könntest natürlich den negativeOutput des Filters benutzen um den Status der Einträge zu ändern, das sollte klappen.

…vielleicht hab ich aber auch die elegantere Lösung noch nicht gefunden, ich bin gespannt was Synesty vorschlägt!

Hallo @bjoernm,

du könntest dir das LastContentChanged Feld im Datastore zu nutze machen. Dieses Datum wird immer dann gesetzt, wenn sich inhaltlich etwas ändert.

Ein Beispiel wie du vorgehen könntest:

In deinem Flow in dem du den Datastore mit den CSV-Daten befüllst, kannst du aus dem entsprechenden DatastoreWriter den Output: updatedRecordsWithChangedContent verwenden und weiter verarbeiten. Hierbei bekommst du alle inhaltlich geänderten Datensätze. Hinweis: In diesem Output sind wirklich nur die geupdateten Datensätze enthalten, nicht aber die Datensätze die komplett neu sind.

Die komplett neuen Datensätze bekommst du ebenfalls aus dem obigen DatastoreWriter, mit dem Output newRecords.

Du hast hier also die Möglichkeit die neuen Daten und geupdateten Daten komplett getrennt voneinander zu behandeln.

Willst du aber z.B. beide Typen zusammen verwenden, kannst du die entsprechenden Outputs via SpreadsheetAppend zusammenführen.


Ich hoffe das dir das bei deinem Problem weiterhilft.

Viele Grüße,
Benjamin

1 „Gefällt mir“

Hallo Benjamin,

ich würde mich hier mal mit einklinken.

Ich habe den Output updatedRecordsWithChangedContent in Benutzung.

Wenn ich bspw. eine Excel-Datei mit 30 Spalten, und sagen wir pro Zeile einen Artikel habe, bekomme ich bei Änderung des Wertes in bspw. Spalte 26 alle 30 Spalten des betroffenen Artikels ausgegeben.

Ich weiß jedoch im Vorfeld nicht, ob sich etwas am Artikel geändert hat.

Gibt es eine Möglichkeit, dass wirklich nur Spaltenwerte ausgegeben werden, welche sich geändert haben bzw gibt es eine Möglichkeit diese zu kennzeichnen?

Vielen Dank!

VG
Jannik