Datastores
In Datastores kann man Daten tabellarisch speichern, ähnlich wie in Excel-Tabellen. Die verfügbaren Spalten werden durch sog. Schemas frei definiert. Die Daten können entweder einzeln per Hand eingetragen werden oder als Datei importiert werden. Der Import kann manuell im Browser oder automatisiert durch einen Flow gestartet werden. Sobald die Daten importiert sind, können sie durch die umfangreichen Such- und Filtermöglichkeiten durchsucht werden.
Datastores unterstützen auch die Speicherung hierarchischer Daten wie z.B. Artikel mit Artikelvarianten oder Aufträge mit Auftragspositionen abbilden.
Importierte Daten lassen sich auch wieder exportieren. Dies kann entweder manuell oder automatisiert per Flow erfolgen. Beide Exportmöglichkeiten erlauben eine umfangreiche Umwandlung und Anpassung durch den Mapper SpreadsheetMapper.
Schema
Mit einem Schema kann man in Synesty Studio eine Datenstruktur definieren, welche in Spreadsheets und Datastores Anwendung findet.
Für Datastores beschreiben Schemas die Spalten, deren Inhalt und Datentyp. Ein Schema wird zur Erstellung von Datastores benötigt und kann auch zur Erstellung mehrerer Datastores wiederverwendet werden. Sie können ein eigenes Schema erstellen oder auf fertige Schemas zurückgreifen.
Mit Hilfe eines definierten Schemas können vorhandene bzw. importierte Daten analysiert und validiert werden. Für jedes Feld können gültige Werte, entweder durch Eingabe von Pattern (Muster) oder durch Eingabe von erlaubten Werten, festgelegt werden.
Um ein neues Schema manuell zu erstellen, navigieren Sie zu Datastores → Schema und nutzen dort den “Schema erstellen” Button.
Hier sehen Sie ebenfalls all ihre angelegten Schemas dieses Workspaces.
Um ein vordefiniertes Schema zu nutzen, wählen Sie in der entsprechenden Auswahl das gewünschte Schema aus und klicken anschließend auf den “Erstellen” Button. Ein solches Schema kann nicht verändert werden.
Schema erstellen
Default
Im Default Modus wird ein neues, leeres Schema erstellt. Hier müssen alle Felder und deren Eigenschaften manuell hinzugefügt werden.
Quick-Builder
Dieser Modus ist ähnlich dem Default Modus. Hier können die Felder aber in einem Text-Feld eingegeben werden. Außerdem kann einem Feld ein Standard-Wert zugewiesen werden.
Schema aus CSV erstellen
In diesem Modus kann eine CSV-Tabelle angegeben werden, aus deren Spaltennamen die Felder des Schemas erstellt werden.
Schema aus JSON erstellen
Dieser Modus erstellt ein Schema anhand einer angegebenen JSON-Datei. Dabei wird die komplexe Baum-Struktur abgeflacht (flattened). Jede neue Ebene wird durch standardmäßig einen Unterstrich (”_”) getrennt. Wird in den Key Namen ein Unterstrich erkannt, wird als Trenner automatisch ein Punkt (”.”) gesetzt. Außerdem wird anhand der Werte versucht der Content-Type (Art des Inhalts) und der Field-Type (Typ) automatisch zu ermitteln.
Die Baumstruktur wird dabei abgeflacht (Flattened).
Weiter Informationen finden Sie hier: Flatten von JSON in ein Schema
Schema aus XML erstellen
Dieser Modus erstellt ein Schema anhand einer angegebenen XML-Datei. Auch hier wird die komplexe Baum-Struktur abgeflacht (flattened). Jede neue Ebene wird durch standardmäßig einen Unterstrich (”_”) getrennt. Wird in den Key Namen ein Unterstrich erkannt, wird als Trenner automatisch ein Punkt (”.”) gesetzt. Außerdem wird anhand der Werte versucht der Content-Type (Art des Inhalts) und der Field-Type (Typ) automatisch zu ermitteln.
Die Baumstruktur wird dabei abgeflacht (Flattened).
Weiter Informationen finden Sie hier: Flatten von XML in ein Schema
Schema konfigurieren
Position
Die Position des Felds (beginnend bei 0). Sie haben mehrere Möglichkeiten ein Feld zu verschieben:
- Verschieben durch Drag&Drop
- Verschieben an den Anfang (➔) oder ans Ende (➔)
- Manuelle Eingabe der Position |
Name
Der Name des Feldes
Art des Inhalts (Content-Type)
Beschreibt den Inhalt des Feldes genauer. Diese Einstellung hat Einfluss auf die Feld-Validierung und Anzeige im Backend. Standardwert: TEXT
Auflistung der möglichen Typen:
Typ | Beschreibung |
---|---|
LONGTEXT | Gibt an, dass dieses Feld einen sehr langen Text enthält. Auswirkung: Aktuell keinerlei Auswirkungen auf Validierung oder Anzeige (evtl. in Zukunft). |
HTML | Gibt an, dass dieses Feld HTML-Code enthält. Auswirkung: Aktuell keinerlei Auswirkungen auf Validierung oder Anzeige (evtl. in Zukunft). |
URL | Gibt an, dass dieses Feld eine URL enthält. Auswirkung: Im Datastore-Backend wird das Feld als anklickbarer Link dargestellt. |
IMAGEURL | Gibt an, dass dieses Feld eine Bild-URL enthält. Auswirkung: Im Datastore-Backend (Detailseite) wird das Bild beim Überfahren mit der Maus eingeblendet. |
JSON | Gibt an, dass dieses Feld einen Wert im JSON-Format enthält. Auswirkung: Wenn das Feld keinen validen JSON-Wert enthält, dann wird im Datastore-Backend bzw. im Mapper Step eine Warnung angezeigt. |
INTEGER | Gibt an, dass das Feld eine Ganzzahl (z.B. 10, 100) enthält. Auswirkung: Wenn der Feldinhalt keine Ganzzahl ist, dann wird im Datastore-Backend und im Mapper Step eine Warnung angezeigt. |
DECIMAL | Gibt an, dass das Feld eine Dezimalzahl ist (Punkt als Dezimaltrenner). Auswirkung: Wenn der Feldinhalt keine Dezimalzahl ist, dann wird im Datastore-Backend und im Mapper Step eine Warnung angezeigt. |
BOOLEAN | Gibt an, dass das Feld entweder TRUE oder FALSE enthält. Auswirkung: Aktuell keinerlei Auswirkungen auf Validierung oder Anzeige (evtl. in Zukunft). |
DATETIME | Gibt an, dass das Feld ein DATUM enthält. Folgende Datumsformate werden unterstützt:
|
Pflichtfeld
Gibt an, ob das Feld ein Pflichtfeld ist oder nicht. Auswirkung: Wenn der Feldinhalt leer ist, dann wird im Datastore-Backend und im Mapper Step eine Warnung angezeigt.
Erweiterte Optionen
Zeigt die am Feld hinterlegten erweiterten Optionen an.
Typ
Hier kann der generelle Datentyp der Spalte eingestellt werden. Standardwert: SINGLE
Auflistung aller möglichen Typen:
Eigenschaft | Beschreibung |
---|---|
SINGLE | Ein einfacher einzelner Wert |
MULTIPLEVALUE | Liste von Werten, getrennt durch ein Trennzeichen (z.B. red,green,yellow,black )Auf Zellen dieses Typs lassen sich im Mapper Step die Hilfs-Funktionen .at(position), .equalsAll(“wert”) oder .contains(“teilstring”) nutzen. |
MAP | Schlüssel-Wert-Paare (z.B. color=red;size=L ) |
Anwendungsbeispiele für MULTIPLEVALUE und MAP
Im Gegensatz zu SINGLE, lassen sich die Werte eines MULTIPLEVALUE oder einer MAP einfach programmatisch auswerten.
- MULTIPLEVALUE
red,green,yellow,black
${meinMULTIVALUE}.at(0)
${meinMULTIVALUE}.contains("gre")
${meinMULTIVALUE}.equalsAll("green")
.equalsAll()
ist eine Synesty-eigene Funktion, die MULTIPLEVALUE Spalten nach exakter Übereinstimmung durchsucht. Beim ersten Treffer liefert der Test true. Vergleichbar ist das mit der Freemarker-Funktion ?seq_contains..equalsAll()
akzeptiert aber auch mehrere Werte.equalsAll(wert1 [,wert2])
und liefert true nur wenn ALLE Werte in der Liste enthalten sind.<#if colors.equalsAll("green", "blue")>Grün und blau<#else>mindestens eins davon ist nicht enthalten</#if>
- MULTIPLEVALUE (mit Art des Inhalts = JSON)
[{ "color" : "red", "size" : "L"}, { "color" : "blue", "size" : "M"}]
Einen Spezialfall stellt die Kombination aus Feldtyp MULTIPLEVALUE und Art des Inhalts JSON dar. Wird diese Kombination im Schema ausgewählt, so werden die Schlüssel-Wert-Paare in einem Array im JSON Format erwartet. Auf Zellen dieses Typs lassen sich im Mapper Step die Hilfs-Funktionen.at(position)
,.equalsAll("wert")
oder.contains("teilstring")
nutzen. MEINJSONMULTIVALUE[0].at("color")
= redMEINJSONMULTIVALUE[1].at("color")
= blue
- MAP
color=red;size=L
${meineMAP}.at("color")
= red${meineMAP}.containsKey("color")
= true${meineMAP}.containsKeysAll("size", "weight")
= false
Trennzeichen
Nur relevant wenn Typ=MULTIPLEVALUE oder MAP und Field-Type nicht JSON ist.
Pflichtfeld
Siehe Schema Konfiguration
RegEx Pattern
Ein regulärer Ausdruck (RegEx), der den Feldinhalt beschreibt. Sollte der Feldinhalt nicht dem Ausdruck entsprechen, dann wird im Datastore-Backend und im Mapper Step eine Warnung angezeigt. Weitere Details unter Pattern.
Erlaubte Werte und Beispiel Werte
Ist der Schalter aktiviert wird der Welt des Feldes validiert, andernfalls werden die hinterlegten Werte nur als Beispielwerte angesehen (das ist sinnvoll wenn dynamische Parameter gesetzt werden die einer bestimmten Form entsprechen müssen.)
Hinterlegen Sie Ihre Werte als Wert -> Label Paare.
Sie haben alternativ auch die Möglichkeit keine Werte vorzugeben und lediglich einen Standardwert zu definieren.
Doppelte Werte können dennoch weiterhin gespeichert werden. Nur Zeilen in denen der Value-Wert leer ist, werden beim Speichern automatisch entfernt.
Wenn Sie im Mapper Step das Schema laden, dann wird eine Auswahl zwischen “Erlaubte Werte” oder “Beispiel Werte” angezeigt.
Sollte der Feldinhalt nicht dem Ausdruck entsprechen, dann wird im Datastore-Backend und im Mapper Step eine Warnung angezeigt wie z.B.
Pattern
Pattern (Muster) legen fest, welche zulässige Struktur ein Wert haben darf. Diese Pattern werden durch Eintrag der entsprechenden RegEx (regular expression - Regulärer Ausdruck) am Feld festgelegt.
Zum Testen von Patterns gibt es verschiedene Programme im Internet. Wir empfehlen https://regex101.com/.
Anwendungsbeispiele für Patterns
Diese Liste enthält einige Beispiele für Patterns, welche für Prüfungen von Werten in einer Spalte verwendet werden können.
Bitte beachten, dass es oft mehrere Lösungen für eine RegEx geben kann.
Format | Beschreibung | RegEx |
---|---|---|
Textlänge (255) | Zulässige Längenbegrenzung z.B. eines Produktnamens auf 255 Zeichen. Produktname soll mindesten 5 Zeichen haben. | ^.{5,255}$ |
Dezimalzahl | Prüfung, ob Wert eine Dezimalzahl ist. Dies findet Anwendung bei z.B. Preisangaben. Es müssen immer genau 2 Stellen nach dem Trenner (hier im Beispiel Punkt) angegeben werden. Beispiel für gültige Werte 49.99, 0.29, 299.00 | ^\d+\.\d{2}$ |
Postleitzahl | 5 stellige Postleitzahl für Deutschland | ^\d{5}$ |
EAN13 | 13 stellige EAN Nummer | ^\d{13}$ |
e-mail Adresse | Prüfung auf gültige e-mail Adresse mit 2 oder 3 Zeichen am Ende (z.B. .de oder .com) Beispiel für gültige Werte: info@synesty.com , info-center@test_1-2.de | ^[a-zA-Z0-9_\-\.]+ @[a-zA-Z0-9_-.]+.[a-zA-Z0-9]{2,3}$ |
IPv4 Adresse | Prüfen auf gültige IP Adresse im IPv4 Format Beispiel für gültigen Wert: 123.10.0.182 | ^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$ |
Erlaubte Werte | Erlaubte Werte prüfen, z.B. Gewichtsangaben “g”, “kg, “oz”, or “lb” Diese Werte können auch direkt bei Erlaubte Werte eingetragen werden. | ^(kg|g|oz|or|lb)$ |
ImageURL | ImageURL mit erlaubten Imageformaten (Bsp. jpg, gif und png) prüfen | ^([Hh][Tt][Tt][Pp][Ss]?:\/\/[a-zA-Z0-9_\-\.\/]+.(jpg|png|gif))$ |
Numerisches Feld | Spalte darf beliebige Anzahl von Zahlen enthalten (z.B. numerische Produktnummer) . Beispiel für gültige Werte: 2348535, 001, 110012 | ^\d+$ |
Schema | Schema für z.B. Produktnummer. Beispiel für gültige Werte: 23-48535.1 , 23-48535.12 , 23-48535.123 | ^\d{2}-\d{5}\.\d{1,3}$ |
Preisangabe Variante 1 | Die zulässige Preisangabe ist entweder ein Zahl ohne Nachkommastelle ODER mit Nachkommastelle wobei es eine oder zei Nachkommastellen geben kann. Beispiel für gültige Werte: 49 oder 99,99 oder 24,9 | ^(\d+)$|^(\d+\,\d{1,2})$ |
Preisangabe Variante 2 | Preisangabe mit 2 festen Nachkommastellen Beispiel für gültige Werte: 123,99 oder 24,49 | ^\d+\,\d{2}$ |
Preisangabe Variante 3 | Preisangabe mit 2 festen Nachkommastellen gefolgt von einem Leerzeichen und Währungsangabe nach ISO 4217 CodeHinweis: Es wird nur die Struktur geprüft. Die Richtigkeit des Währungssymbols wird nicht geprüft. Beispiel für gültige Werte: 123,99 EUR oder 24,49 CHF | ^\d+\,\d{2}\s[A-Z]{3}$ |
Datenvalidierung
Validierung im Datastore
Im Datastore werden invalide Zellen, die nicht dem Schema entsprechen rot markiert und hovert man mit der Maus über die entsprechende Zeile, kommt eine kurze Erläuterung. Das ganze wird auch in der Detailansicht angezeigt.
Validierung im Mapper Step
Auch im Mapper Step kann man Informationen aus dem Schema nutzen.
Dazu kann man die Funktion “Schema Laden” nutzen, um ein Schema quasi über einen Mapper “drüber” zu legen. Dadurch werden die aktuellen Daten validiert und z.B. auch die erlaubten Werte sichtbar.
Mehr dazu unter Mapper Step - Ziel-Schema laden.
Validierungsbeispiele
-
Art des Inhalts (Content-Type)
-
Konfiguration im Schema
-
Validierungsergebnis Datastore
-
Validierungsergebnis Mapper Step
-
-
Pattern (RegEx überprüfung des Werts)
-
Konfiguration im Schema
-
Validierungsergebnis Datastore
-
Validierungsergebnis Mapper Step
-
-
Elaubte Werte (Vordefinierte erlaubte Werte für den Inhalt)
-
Konfiguration im Schema
-
Validierungsergebnis Datastore
-
Validierungsergebnis Mapper Step
-
Einen neuen Datastore erstellen
Einen neuen Datastore können Sie über den Menüpunkt Data Managements -> Datastores → “Neuer Datastore” Button anlegen.
Der Name des Datastore kann beliebig gewählt werden. Wählen Sie anschließen den Typ und das Schema des neuen Datastores aus.
Wenn Sie einen Child Datastore erstellen, muss zusätzlich ein vorhandener Master Datastore ausgewählt werden (siehe Master-Child). Erstellen Sie deshalb immer zuerst den Master Datastore.
Interne Spalten
Jeder Datensatz (Datastore Record) hat einige feste, interne Spalten, die immer vorhanden sind. Diese spielen vor allem beim Import und Export eine Rolle. Diese Spalten kann man in Identifier- und Status-Spalten unterscheiden.
Identifier-Spalten
Die Identifier-Spalten dienen der eindeutigen Zuordnung von Datensätzen und deren Beziehungen zu anderen Datensätze (Master-Child und Parent-Variant). Alle Pflichtfelder müssen bei Imports oder Updates gefüllt werden, damit die Datensätze identifiziert werden können. Die optionalen Spalten dienen hauptsächlich der Verknüpfung von Datensätzen mit anderen Datensätzen.
Name | Beschreibung |
---|---|
datastorename (Pflichtfeld) | Name des Datastores in den importiert werden soll. |
folder (Pflichtfeld) | Bezeichnung für den Ordner, zur Gruppierung. Der folder ist Teil des Primärschlüssels eines Datensatzes. Default-Wert (wenn leer oder nicht vorhanden): default |
identifier (Pflichtfeld) | Eindeutiger Bezeichner des Datensatzes. z.B. Artikelnummer, SKU. Muss zusammen mit folder in einem Datastore eindeutig sein. |
identifier2 (Optional) | Optionaler Identifier der für weitere Schlüssel (z.B. Lieferanten-Artikelnummer) verwendet werden kann. Der identifier2 kann in der Querverweis Funktion verwendet werden, um einen Datensatz zu identifizieren. Default-Wert: <leer> |
identifier3 (Optional) | Optionaler Identifier der für weitere Schlüssel (z.B. EAN) verwendet werden kann. Der identifier3 kann in der Querverweis Funktion verwendet werden, um einen Datensatz zu identifizieren. Default-Wert: <leer> |
parent_identifier (Optional) | Der identifier des referenzierten Parent Datensatzes im gleichen Datastore und Folder. Wenn gesetzt, dann wird dieser Datensatz mit dem Parent verknüpft und bildet einen Datensatz vom Typ “Variant”. Default-Wert: <leer> |
master_datastore (Optional) | Nur für Child-Datastores. Name des referenzierten Master-Datastores. (master_datastore, master_folder und master_identifer müssen zusammen den referenzierten Master-Datensatz beschreiben.) |
master_folder (Optional) | Nur für Child-Datastores. Bezeichnung für den Ordner des referenzierten Master-Datensatzes. (master_datastore, master_folder und master_identifer müssen zusammen den referenzierten Master-Datensatz beschreiben.) |
master_identifier (Optional) | Nur für Child-Datastores. identifier des referenzierten Master-Datasatzes im Master-Datastore. (master_datastore, master_folder und master_identifer müssen zusammen den referenzierten Master-Datensatz beschreiben.) |
Status-Spalten
Die Status-Spalten dienen der Anzeige im Datastore und können zur Filterung genutzt werden.
Name | Beschreibung |
---|---|
Created | Diese Spalte gibt das Erstellungsdatum des Datensatzes an. |
Updated | Diese Spalte gibt das Datum des letzten Updates an. (muss nicht zwingend eine Änderung des Inhalts bedeuten, wenn der gleiche Datensatz importiert wurde) |
LastContentChanged | Diese Spalte gibt das Datum der letzten Änderung des Inhalts an. (Spalte des Schemas, nicht interne-Spalte) |
Processing Status | Diese Spalte gibt den Verarbeitungsstatus eines Datensatzes an. Mögliche Werte sind: UNPROCESSED, INPROCESS, PROCESSED_ERROR, PROCESSED_SUCCESS Diese Werte werden meist von Steps gesetzt, die Datensätze eines Datastores direkt verarbeiten, z.B. PlentyAddOrders |
Processed | Diese Spalte gibt das Datum der Verarbeitung an. (wann wurde der Processing Status geändert) |
Daten bearbeiten
Es gibt einge Möglichkeiten wie man Datensätze bearbeiten kann.
Datensatz-Detailansicht
Über das Auge-Symbol in der Suche gelangt man zur Detail-Ansicht.
Anschließen auf “Daten bearbeiten” um in den Editiermodus zu gelangen.
Bei Änderungen wird der Wert vor der Änderung noch mit angezeigt. Dies ist oft bei der Fehlersuche hilfreich, wenn man herausfinden will, was und wann sich ein Datensatz geändert hat.
Inline-Editing direkt im Suchergebnis
Durch Doppelklick auf einen Spaltenwert oder den Namen der Spalte im Suchergebnis des Datastores, kann man die Felder einer Zeile direkt editieren. Das ist praktisch, wenn man schnell Änderungen durchführen, ohne erst in die Detailansicht zu wechseln.
Massen-Bearbeiten
Eine spezielle Funktion ist das Massen-Bearbeiten, dass unter Aktionen / Bearbeiten erklärt wird.
Verarbeitungsstatus ändern
Aktualisiert den PROCESSING STATUS der selektierten Items. Das kann z.B. nützlich sein, um einen Datenexport erneut anzutriggern, wenn dieser z.B. den betroffenen Datensatz nach fehlgeschlagenem Export auf PROCESSED_ERROR gestellt hat. In diesem Fall würde man vermutlich den Datensatz wieder auf UNPROCESSED zurücksetzen.
Hierarchische Daten
Datastores erlauben es Daten hierarchisch abzuspeichern. Dabei unterscheiden wir zwischen zwei verschiedenen Konzepten:
- Parent-Variant
- Master-Child
Wenn wir von hierarchischen Daten und Parent-Variant Import sprechen, dann meinen wir damit den Import von Daten, zwischen denen es eine Eltern-Kind Beziehung (z.B. Stamm-Artikel und dazugehörige Varianten) gibt und die sich im gleichen Datastore befinden.
Master-Child ist sehr ähnlich zu Parent-Variant. Beide Konzepte beschreiben eine Eltern-Kind-Beziehung, aber mit folgenden Unterschieden:
- Bei Parent-Variant liegen die Datensätze im selben Datastore
- dadurch haben Parent- und Variant-Datensätze das gleiche Schema
- bei Master-Child liegen Datensätze in unterschiedlichen Datastores
- dadurch können Master- und Child-Datensätze unterschiedliche Schemas verwenden
Wir haben uns für diese 2 unterschiedlichen Begriffe entschieden, um diese beiden Konzepte auseinander halten zu können.
Mehr dazu auf der Seite Datastore Import und Export.
Datenimport und -export
Das Thema Import und Export wird auf der Seite Datastore Import und Export ausgiebig behandelt.
Export hierarchischer Daten mit Zugriff auf Parent / Master Zeile
Datensätze exportieren
Alle Einträge (mit sämtlichen Spalten) des Datastores können als CSV-Datei heruntergeladen werden.
Backup und Wiederherstellung (Backup / Restore)
Unter Datastore-Einstellungen finden Sie die Punkte Backup erstellen und Backup wiederherstellen.
Damit kann ein Datastore als ZIP-Datei mit samt Schema gesichert und wieder eingespielt werden.
Datastore-Backup automatisieren
Ein Datastore-Backup kann mit dem Step Datastore-Backup auch per Flow automatisiert werden.
Suche
Die Suche ist der zentrale Anlaufpunkt für jegliche Interaktion mit einem Datastore. Sie erlaubt neben der klassischen Suche über einen Suchbegriff die Anwendung verschiedenster Filter, um Daten zu finden und zu selektieren.
Suchfilter
Suchbegriff
Durchsucht den Datastore nach Datensätzen, die in einem Feld die eingegebenen Zeichenfolge (den Suchbegriff) enthalten.
Folder
Grenzt die Suche auf einen oder mehrere Folder ein.
Child Filter
Zeigt Datensätze abhängig davon, ob sie Child-Datensätze in einem Child-Datastore besitzen oder nicht. (Nur sichtbar bei Master-Datastores mit mindestens einem Child-Datastore)
- Alle (keine Einschränkung)
- Datensätze mit Children
- Datensätze ohne Children
Child-Filter
Findet Datensätze, zu denen es Datensätze im Child-Datastore gibt, oder umgekehrt. Dieser Filter ist nur bei Master-Datastores sinnvoll, zu denen es Datensätze in Child-Datastores gibt.
Level Filter (Datensatztyp Parent/Variant)
Zeigt Datensätze abhängig von ihrer Positionen in der Parent-Variant Hierarchie.
- Parents+Varianten (ungeordnet) - zeigt alle Datensätze an (ungeordnet)
- Parents (erst Parents + Varianten) - Zeigt als oberstes den Parent, darunter die Varianten an
- Parents (nur Parents) - zeigt nur Parent Datensätze, also der 1. Ebene
- Varianten oder Parents ohne Varianten - zeigt nur die unterste Hierarchieebene, d.h. entweder Varianten oder Parents die keine Varianten haben.
- Nur Varianten - zeigt nur Varianten. D.h. ausschließlich Varianten, die einen Parent haben, nicht aber Parents, die keine Varianten haben.
Level Filter (Parent/Variant Status)
Findet Datensätze in Abhängigkeit davon, ob es Variant-Items gibt oder nicht.
- Alle - keine Einschränkung
- Parents mit Varianten - findet alle Datensätze, die auch Varianten haben (Varianten haben den Identifier des Parents als parent_id)
- Parents ohne Varianten - findet alle Datensätze, die keine Varianten haben
Processing Filter
Findet Datensätze mit einem bestimmten PROCESSING-Status.
- Alle - keine Einschränkung
- UNPROCESSED - nur unverarbeitete Datensätze
- INPROCESS - nur Datensätze, die in Bearbeitung sind
- PROCESSED SUCCESS - erfolgreich bearbeitete Datensätze
- PROCESSED ERROR - fehlerhaft bearbeitete Datensätze
- PROCESS_MARK_DELETE - Datensätze die als “zum Löschen freigegeben” markiert wurden
Der Processing Status kann folgendermaßen gesetzt werden:
- Datastore Suche / Actions / Reset Processing Status
- DatastoreWriter Step
- einige andere Steps, die direkt auf Datastores arbeiten (z.B. Plentymarkets AddOrders Step)
Sortierung
Sortiert die Ergebnisliste nach folgenden Spalten, wahlweise in absteigender oder aufsteigender Richtung:
- Erstellungsdatum
- Aktualisierungsdatum
- Datum der letzten Inhaltsänderung
- Datum der Verarbeitung - nach Verarbeitungsdatum
- Identifier - 1,2 oder 3
- Folder
- Tags
Datensatztyp
- Parents+Varianten (ungeordnet)
- Parents (erst Parents + Varianten)
- Parents (nur Parents)
- Varianten oder Parents ohne Varianten
- nur Varianten
Freemarker Filter
Hier kann ein Freemarker (siehe Scripting) Ausdruck zur Filterung der Datensätze verwendet werden. Beispiel: stock == “2”
Der Beispielfilter zeigt nur Datensätze an die in der Spalte stock einen Wert von “2” besitzen.
Über das ”+” Zeichen erhalten Sie eine kleine Auswahl vorgefertigter Filter.
Datums Filter
Findet nur Datensätze, bei denen die gewählte Datumsspalte in einem bestimmten Zeitraum liegt.
- Erstellungsdatum
- Aktualisierungsdatum
- Datum der letzten Verarbeitung
- Datum der letzten Inhaltsänderung - Dieses Datum wird nur aktualisiert, wenn sich wirklich eines der Felder durch ein Update verändert hat.
dynamisches Datum (Date-Expression)
Sie haben die Möglichkeit beim auswählen des Datums über den Reiter “Expression” ein dynamisches Datum zu erzeugen. Sie haben hierbei Zugriff auf einige spezielle “Variablen”, welche im folgenden erläutert werden. Dies geschieht Anhand des Beispieldatums 15.01.2025 10:45
{{now}}
- Aktuelles Datum => 2025-01-15 10:45
Rundungseinheiten für {{now}}
(werden direkt angehangen)
\y
- Erster Tag des aktuellen Jahres => 2025-01-01 00:00\M
- Erster Tag des aktuellen Monats => 2025-01-01 00:00\w
- Erster Tag der aktuellen Woche => 2025-01-13 00:00\d
- Aktueller Tag um Mitternacht => 2025-01-01 00:00\h
- Aktuelle volle Stunde => 2025-01-15 10:00
Zeitmodifikatoren können mit {{now}}
verrechnet werden
y
- JahrM
- Monatw
- Woched
- Tagh
- Stundem
- Minute
In dem gezeigten Beispiel wird das aktuelle Datum (15.01.2025 10:45) auf 0:00 Uhr gesetzt, ein Monat aufgerechnet, zwei Tage abgezogen und 8 Stunden hinzugerechnet.
Durch den Vorschau-Button (Auge-Icon) kann man sich die aktuelle Vorschau des erzeugten Wertes anzeigen lassen.
Tagfilter
Hier können Datensätze danach gefiltert werden, ob ausgewählte Tags gesetzt sind oder nicht.
Identifier 1, 2 & 3
Hier kann nach verschiedenen Identifiern gefiltert werden.
Flow-Run-ID Filter
Findet Datensätze, die durch einen bestimmten Flow-Run im Rahmen eines ausgeführten Flows “angefasst” wurden. Angenommen ein Datenimport Flow hat ein Feld eines Datensatzes geändert, dann wird im Datensatz die ID des Flow-Runs gespeichert, im Rahmen dessen die Änderung gemacht wurde.
In der Datensatz Detailansicht wird dies durch “Importiert durch Flowrun” gekennzeichnet.
Nützlich ist diese Funktion, um alle Datensätze zu identifizieren, die durch einen bestimmten Flow-Run aktualisiert wurden.
In vielen Fällen noch wichtiger ist es, alle Datensätze zu identifizieren, die NICHT durch einen bestimmten Flow-Run “angefasst” wurden. Diese Datensätze sind dabei oft Datenleichen, also Datensätze, die z.B. von einem externen System NICHT MEHR mitgeschickt werden (z.B. ausgelaufene Artikel). Diese Datensätze will man in der Regel finden und löschen bzw. als inaktiv markieren oder Bestand null setzen.
Zeige Children
Zeigt zusätzlich zu den Datensätzen des derzeit aktuellen Datastores auch die Child - Datensätze an.
Daten validieren
Zeigt Datensätze abhängig vom Validierungsstatus:
Der Validierungsstatus wird beim Speichern (Import, Anlegen und Update) eines Datesatzes anhand der im Schema hinterlegten Informationen ermittelt. Wenn im Schema z.B. ein Feld als Pflichtfeld definiert wurde, aber beim Import leer ist, dann wird der ganze Datensatz als ungültig (Invalid) markiert. Bei der Suche erscheinen die invaliden Felder rot hinterlegt.
Aktionen
Aktionen werden auch als Massen-Update oder Gruppenfunktionen bezeichnet und stellen Funktionen im Datastore bereit, die auf mehrere Datensätze gleichzeitig angewendet werden können.
Dabei lassen sich die Aktionen nur auf selektierte Datensätze oder auf das gesamte Suchergebnis anwenden. Letzteres bedeutet, dass auch Datensätze von der Aktion erfasst werden, die nicht auf der aktuellen Suchergebnisseite angezeigt werden. Bei solchen Aktionen darf kein Datensatz selektiert sein.
Daten bearbeiten
Die Bearbeiten Funktion ermöglicht die Änderung von Werten selektierter Datensätze (Massen Update). Wählen Sie eine oder mehrere Spalten aus in denen Werte geändert werden sollen. Anschließend gelangen Sie in die Transformy Ansicht und können hier Änderungen der Werte vornehmen.
Bestätigen Sie die Änderungen durch drücken des “Start Update” Buttons.
Daten löschen
Entfernt die selektierten Datensätze.
Folder Löschen
Entfernt alle Datensätze eines selbst gewählten Folders und diversen optionalen Filtern.
Datastore leeren
Entfernt alle Datensätze dieses Datastores.
Vorgehen beim leeren des Datastores:
1. Zusätzliche Optionen wählen (optional):
Sie haben die Möglichkeit, die zu löschenden Datensätze nach bestimmten Merkmalen einzugrenzen:
- Löschen von Datensätzen mit einen bestimmten Verarbeitungsstatus:
- UNPROCESSED
- INPROCESSED
- PROCESSED SUCCESS
- PROCESSED ERROR
- PROCESSED MARK_DELETE
- Eingrenzung der Datenzeilen durch einen Datumsfilter:
- Erstellungsdatum
- letzte Aktualisierung
- letzte InhaltsänderungNach Auswahl des Filter-Kriteriums, tragen Sie bitte noch das gewünschte Start- und/oder Enddatum ein.
2. Vorschau anzeigen und kontrollieren
Nach Eingabe aller gewünschten Optionen, klicken Sie auf “Vorschau vor Löschen” um sich ein Preview der zu löschenden Daten anzuzeigen.
3. Daten löschen
Nach Kontrolle der Datenzeilen, kehren Sie in das ursprüngliche Browser-Tab zurück. Nun können Sie die Daten, falls gewünscht, durch Klick auf “Jetzt unwiderruflich löschen” aus dem Datastore entfernen.
Suchfilter speichern
Ein erstellter Suchfilter aus allen oben genannten Möglichkeiten kann mit unter einem frei wählbaren Namen gespeichert werden, um ihn später mit einem Klick wieder aufzurufen.
Hierzu rufen Sie Filter → gespeicherte Suchfilter → Aktuelle Suchfilter speichern auf:
Und vergeben einen Namen, z.B. “Neue Bestellungen ohne PLZ”
Anschließend ist der Filter unter diesen Namen jederzeit und in jedem Datastore abrufbar:
Schnellsuche Vorlagen
Die Schnellsuche bietet auch einige vorgefertigte und häufig genutzte Suchfilter unter Vorlagen.
Spalten-Funktionen
Eindeutige Werte
Oft möchte man wissen, wie viele eindeutige Werte eine bestimmte Spalte hat. Das spielt immer dann eine Rolle, wenn man diese Werte z.B. für Zuordnungstabellen (Mappingsets in Synesty Studio) braucht.
Beispiel: “Wie viele eindeutige Kategorien habe ich?”
D.h. angenommen man hat einen Katalog mit 20000 Artikeln, die sich auf 105 verschiedene Kategorien aufteilen. Wenn man nun eine Liste genau dieser 105 eindeutigen Kategoriepfade wissen möchte, dann kann man diese Funktion benutzen.
Das “Eindeutige Werte” Feature entspricht der aus SQL-Datenbanken bekannten DISTINCT() Funktion und dient dazu die eindeutigen / unterschiedlichen Werte einer gewählten Spalte über alle Datensätze zu ermitteln.
Der Screenshot zeigt, dass es pro “brandname” jeweils einen Datensatz gibt.
Datastore Management
Hinter dem Menüpunkt Datastore-Management finden Sie Konfigurationseinstellungen für einen Datastore.
Diese stehen ab dem Plus-Paket zur Verfügung.
Automatisches Löschen von Datensätzen
Die automatische Löschfunktion erlaubt Ihnen Datensätze automatisch zu entfernen, welche älter als X Tage sind, bezogen auf das gewählte Datumsfeld. Optional kann die Löschung noch auf ein oder mehrere Processing-Status eingeschränkt werden. Der Löschvorgang läuft regelmäßig im Hintergrund.
Wann brauche ich das?
Immer wenn Sie sehr alte Datensätze automatisch löschen oder Daten nicht sehr lange in Datastores speichern wollen. Wenn Datensätze durch diese Funktion entfernt wurden, finden Sie einen Eintrag im System Log.
Änderungs-Tracking konfigurieren und Felder ausschließen
Was ist Änderungs-Tracking?
Wenn Sie bereits Datastores nutzen, dann kennen Sie das Feld LastContentChanged, den jeder Datensatz besitzt.
Änderungs-Tracking erkennt inhaltliche Änderungen an Datensätzen. Jedes mal wenn sich ein Feld inhaltlich ändert, wird das Feld LastContentChanged des Datensatzes aktualisiert.
Dieses Verhalten ist automatisch für ALLE Felder aktiv.
Neu ist ab jetzt, dass dieses Verhalten konfigurierbar ist, und dass man bestimmte Felder vom Änderungs-Tracking ausschließen kann.
Wann brauche ich das?
Angenommen Sie haben eine Artikeldatenbank. Sie wollen dass ein Datensatz nur als geändert markiert wird, wenn sich Bestand (stock) oder Preis (price) geändert hat, nicht aber wenn sich das Feld Beschreibung ändert.
In diesem Fall, würden Sie alle Felder außer stock und price ausschließen.
Ein Folgeprozess eines Bestandsupdates kann damit wesentlich effizienter gestaltet werden, da der Datensatz nur noch als “inhaltlich geändert” markiert wird, wenn sich stock oder price geändert haben, und nicht mehr bei jeder Feldänderung.
Mapping Set
Ebenfalls im Navigationspunkt Data Management, finden Sie den Reiter Mapping Set. Ein Mapping Set ist eine Art Übersetzungstabelle, womit Sie einen Quellwert in einen Zielwert übersetzen, auch genannt “mappen”, können.
Im Screenshot sehen Sie ein Beispiel, wie Mapping Sets dazu genutzt werden können, um z.B. Attribute verschiedener Systeme anzugleichen bzw. als synonym zu verwenden.
Wo werden Mapping Sets angewendet?
Mapping Sets können als Spaltenfunktion innerhalb des Mapper SpreadsheetMapper Steps angewendet werden, sowie unter Eindeutige Werte bei den Datastore-Spaltenfunktionen.
Das betrifft folgende Bereiche und Aktionen:
-
Datastore Import
-
Datastore Export
-
Datastore Spaltenfunktionen
-
Mapper Step
Häufig gestellte Fragen zum Thema Datastore
Woher weiß ich wann ich Datastores brauche?
Immer dann, wenn Sie Daten in Synesty Studio zwischen speichern wollen oder müssen, kommen Datastores zum Einsatz.
Ob und wann Sie Daten zwischenspeichern müssen hängt von verschiedenen Faktoren ab.
In der Praxis werden Datastores häufig dann genutzt, wenn Sie neue Daten mit vorhandenen Daten abgleichen wollen.
Wann brauche ich Datastores nicht?
Es gibt viele Szenarien, wo Sie keine Datastores benötigen.
Zum Beispiel, wenn Sie einfach nur einen Flow erstellen, der eine CSV-Datei geringfügig umwandelt und diese dann auf einen FTP-Server kopiert - mit anderen Worten “die Daten nur durchschleift”. In diesem Fall müssen die Daten in der Regel nicht zwischengespeichert werden. Theoretisch könnte man das - aber man muss es nicht.
Wann ist ein Datastore sinnvoll?
Angenommen Sie haben ein Szenario, wo Sie von mehreren Lieferanten Produktdaten bekommen. Man könnte diese verschiedenen Daten erstmal in einem Datastore konsolidieren. D.h. man importiert der Reihe nach alle Daten in den Datastore. Dabei könnte man auch schon Spalten bereinigen, umbenennen oder anreichern. D.h. am Ende liegen die Daten dann einheitlich im Datastore. Sie können die Daten in Ruhe sichten, evtl. manuell bearbeiten oder filtern. Anschließend könnten die Daten aus dem Datastore mit Hilfe von Flows weiterverarbeitet oder exportiert werden.
Weitere Anwendungsbeispiele:
-
Markierung und Speicherung von Zuständen z.B. Bearbeitungsstatus
- Angenommen Sie wollen Datensätze als “exportiert” oder “noch nicht exportiert” markieren. Dann können Sie diese Markierung am Datensatz speichern und damit verhindern dass Datensätze doppelt exportiert werden.
- Sie könnten z.B. “verbotene” Datensätze markieren, die einem Eintrag in einer Blacklist oder Whitelist entsprechen.
-
Konsolidierung verschiedener Datenquellen in ein einheitliches Format. Das einheitliche Format stellt der Datastores dar.
-
Anreicherung von Daten über Querverweise
- Angenommen Sie wollen eine CSV-Datei eines Lieferanten, die nur eine Artikelnummer enthält, um weitere Spalten wie Artikelname und Bild-URL aus ihrem eigenen Produktkatalog erweitern. Dann ist ein Datastore sehr sinnvoll, da man über den Querverweis auf die Artikelnummer auf alle Spalten ihrer Artikel zugreifen kann, um damit die CSV-Datei zu erweitern
-
Abgleich von neuen und vorhandenen Daten
Was kostet die Speicherung in Datastores?
Immer wenn Sie Daten in einem Datastore speichern, benötigen Sie auch den notwendigen Speicherplatz dafür. In Synesty Studio wird das pro Datensatz gemessen. D.h. Sie müssen die notwendige Anzahl an Datensätzen gebucht haben, um entsprechend viele Datensätze speichern zu können.
Sie können ein Paket erwerben, um die Datensatz-Limits zu erhöhen. Das Dashboard zeigt ihnen immer den aktuellen Verbrauch ihrer Datensätze an.