target Attribut¶
Ziel¶
Das target Attribut innerhalb des generate und execute Elements in DATAMIMIC ermöglicht es Benutzern, das gewünschte Ausgabeformat für die generierten Daten anzugeben. Diese Funktionalität bietet Flexibilität bei der Ausrichtung der Ausgabe auf verschiedene Formate oder Umgebungen, sei es eingebaute Optionen wie CSV oder benutzerdefinierte Konfigurationen wie Datenbanken.
Ausgabeziele¶
DATAMIMIC unterstützt nativ die folgenden Ausgabeziele (Ausgabetypen oder Ausgabenformate):
Preview: Standardwert, generierte Daten werden immer mit einem begrenzten Subset in unsererDATAMIMIC UI Previewausgegeben.LogExporter: Druckt die Daten in derLog View. Dieser Exporter wird hauptsächlich zum Debuggen verwendet, daher hat er ein Standard-Maximum von 100 Elementen. Wir empfehlen, unsere anderen Exporter wie CSV, TXT... zu verwenden, wenn du größere Datensätze verarbeiten möchtest.ConsoleExporter: Druckt die generierten Daten direkt in die Konsole, nützlich für schnelles Debuggen und Überprüfen.mem: Gibt die Daten an einen In-Memory-Speicher aus, was einen schnellen Zugriff und Manipulation innerhalb der gleichen Umgebung ermöglicht.CSV: Exportiert die generierten Daten in eine CSV-Datei, die ideal für die Verarbeitung von tabellarischen Daten ist und leicht in Tabellenkalkulationsanwendungen importiert werden kann. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.JSON: Gibt die Daten im JSON-Format aus, geeignet für Webanwendungen und Datenaustausch zwischen Systemen. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.JSONSingle: Gibt die Daten im JSON-Format aus, aber jede Aufzeichnung in einer einzelnen Datei. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.OpenSearchBulk: Exportiert die Daten im OpenSearch-Bulk-Format, das nützlich ist für das Bulk-Indexing von Daten in OpenSearch. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.TXT: Speichert die Daten als einfache Textdatei, geeignet für einfache textbasierte Aufzeichnungen oder Logs. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.XML: Exportiert die Daten in eine XML-Datei, nützlich für strukturierte Datenspeicherung und Datenaustausch zwischen verschiedenen Systemen. Diese Datei kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.
Notes
Das target Attribut unterstützt mehrere Werte, so dass du verschiedene Ausgabeformate oder Umgebungen kombinieren kannst. Dies kann besonders nützlich sein, wenn du die gleichen generierten Daten gleichzeitig an mehrere Orte leiten möchtest.
Anwendungsbeispiel: Standard-Ausgabeziele¶
Hier ist ein Beispiel, wie das <generate/> Element mit einem eingebauten Ziel verwendet wird:
1 2 3 4 5 6 | |
Benutzerdefinierte Umgebungsziele¶
DATAMIMIC unterstützt auch benutzerdefinierte Umgebungen, so dass Benutzer die Ausgabe auf spezifische Datenbanken, Message Broker oder andere externe Systeme lenken können. Zum Beispiel:
- Datenbanken: Schreibe generierte Daten direkt in eine Datenbank.
- Kafka: Sende generierte Daten an ein Kafka-Topic.
- MongoDB: Füge generierte Daten in eine MongoDB-Collection ein.
Um eine benutzerdefinierte Umgebung als Ziel zu verwenden, müssen wir zuerst die Umgebung erstellen von unserer DATAMIMIC UI, und dann in dem target Attribut angeben:
1 2 3 4 5 | |
Schau dir unser Database Tutorial für ein detaillierteres Beispiel an.
Anwendungsbeispiel und Konfiguration von unterstützten Zielen¶
CSV¶
1 2 3 4 | |
Wir können auch die CSV-Dateikonfiguration angeben, wie delimiter, quotechar, quoting, encoding, line_terminator und chunk_size:
1 2 3 4 | |
JSON / JSONSingle¶
Wir können JSON-Dateien mit mehreren Datensätzen in einer einzigen Datei oder jedem Datensatz in einer separaten Datei generieren, indem wir das Ziel als JSON oder JSONSingle definieren:
JSONSingle ist eigentlich ein Spezialfall von JSON, bei dem jeder Datensatz in einer separaten Datei gespeichert wird. Die Datensätze werden nicht in einem Array gespeichert, sondern als einzelne JSON-Dateien.
Das Gleiche passiert, wenn wir das Ziel JSON(chunk_size=1) verwenden.
1 2 3 4 | |
Wir können auch die JSON-Dateikonfiguration angeben, wie use_ndjson, encoding und chunk_size:
1 2 3 4 | |
Dynamische targetEntity¶
Single-File-Exporter unterstützen dynamische Dateinamen basierend auf Datensatzdaten.
Warum nur Single-File-Exporter?¶
Streaming-Exporter (CSV, JSON, XML, Template) können keine dynamischen Dateinamen unterstützen, weil:
- Sie mehrere Datensätze in eine Datei bündeln
- Chunking- und Flush-Semantik einen stabilen Dateinamen erfordert
- Das Ändern von Dateinamen während des Streamings würde Hochdurchsatz-Garantien brechen
Single-File-Exporter erstellen eine Datei pro Datensatz, sodass jede Datei einen eindeutigen Namen haben kann.
Syntax¶
| Syntax | Verhalten |
|---|---|
{expr} |
Pro Datensatz ausgewertet für targetEntity; verwende diese Form für Klarheit. |
{{ expr }} |
Wird genauso behandelt wie {expr} für targetEntity (kein praktischer Unterschied). |
Hinweis: Für targetEntity ergeben {expr} und {{ expr }} dieselben Dateinamen, weil der Ausdrucks-Cache
für jeden Datensatz zurückgesetzt wird und der Wert einmal pro Datensatz ausgewertet wird. Für den allgemeinen Unterschied zwischen gecachten ({expr}) und dynamischen ({{ expr }}) Ausdrücken in anderen Kontexten, siehe Ausdrucks-Syntax.
Beispiel: Kundenbasierte Rechnungs-Dateinamen¶
1 2 3 4 5 6 7 8 9 10 11 | |
Ausgabedateien: CUST001.json, CUST002.json, CUST003.json, etc.
Wenn dasselbe targetEntity in einem Single-Process-Lauf wiederholt wird, wird ein Suffix bei Duplikaten hinzugefügt:
CUST001_1.json, CUST001_2.json, ...
Beispiel: Zahlungsreferenz-Dateinamen¶
1 2 3 4 5 6 7 8 9 10 11 | |
Ausgabedateien: PAYABC123456.mt103, PAYDEF789012.mt103, etc. (Duplikate erhalten PAYABC123456_1.mt103)
Unterstützte Exporter¶
| Exporter | Dynamische targetEntity | Grund |
|---|---|---|
TemplateSingle |
✓ | Eine Datei pro Datensatz |
JSONSingle |
✓ | Eine Datei pro Datensatz |
XMLSingle |
✓ | Eine Datei pro Datensatz |
CSV |
✗ | Streamt in eine einzelne Datei |
JSON |
✗ | Streamt in eine einzelne Datei |
XML |
✗ | Streamt in eine einzelne Datei |
Template |
✗ | Streamt in eine einzelne Datei |
Erweiterungs-Override (TemplateSingle)¶
Überschreibe die Dateierweiterung, die vom Template-Namen abgeleitet wird:
1 2 3 4 5 6 7 8 9 | |
Ausgabe: PAY001.dat, PAY002.dat, etc. (anstatt .mt103)
Fehlerbehandlung¶
Die Verwendung von dynamischer targetEntity mit Streaming-Exportern erzeugt Fehler I322:
1 2 3 4 | |
Fehlermeldung:
1 2 | |
Siehe Fehlercode-Referenz für weitere Details.
Dateinamen-Muster (Single-File-Exporter)¶
Die Benennung hängt davon ab, ob targetEntity dynamisch ist und ob Multiprocessing aktiviert ist:
- Statisches
targetEntity(Standard): hängt immer einen Zähler an:basename_1.json,basename_2.json, ... - Dynamisches
targetEntity+ Single-Process: erstes Vorkommen istbasename.json; Duplikate fügen ein Suffix hinzu (basename_1.json,basename_2.json, ...). - Multi-Process: verwendet immer
basename_<worker_id>.<counter>.json(keine prozessübergreifende Duplikaterkennung).
OpenSearchBulk¶
Das OpenSearchBulk-Ziel wird verwendet, um Daten im OpenSearch-Bulk-Format zu generieren. Dieses Format wird verwendet, um Daten in OpenSearch zu indizieren. Die generierten Daten werden in einer Datei mit der Erweiterung .json oder .ndjson gespeichert und können mit der Bulk-API in OpenSearch importiert werden.
Die Standardkonfiguration für das OpenSearchBulk-Ziel ist wie folgt chunk_size=None, encoding='utf-8', use_ndjson=True: Das bedeutet, keine Chunking, utf-8-Codierung und Verwendung des NDJSON-Formats.
1 2 3 4 | |
Wenn wir use_ndjson=False setzen, werden die generierten Daten im JSON-Format gespeichert und in einem Array gespeichert:
1 2 3 4 5 6 | |
Um das OpenSearchBulk-Ziel zu verwenden, können wir das Ziel als OpenSearchBulk definieren und das Modell muss die Schlüssel für den Index, die ID und das Routing angeben:
$$_action$$: Die Aktion, die am Dokument ausgeführt werden soll, wie Index, Create oder Delete.
$$_index$$: Der Index, zu dem das Dokument gehört.
$$_id$$: Die eindeutige Kennung für das Dokument.
$$routing$$: Der Routing-Wert für das Dokument.
Hier ist ein Beispiel, wie das OpenSearchBulk-Ziel verwendet wird:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Hier ist der Inhalt der script/template_xyz.json Datei:
1 2 3 4 5 6 | |
Die Ausgabe wird in einer Datei mit der Erweiterung .json gespeichert und kann von unserem DATAMIMIC UI Artifact heruntergeladen werden.
Vorschau der generierten Daten im OpenSearchBulk-Format:
1 2 3 4 5 6 7 8 | |