Zum Inhalt

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.

Eingebaute unterstützte Ziele

DATAMIMIC unterstützt nativ die folgenden Ausgabeziele:

  • Preview: Standardwert, generierte Daten werden immer mit einem begrenzten Subset in unserer DATAMIMIC UI Preview ausgegeben.
  • LogExporter: Druckt die Daten in der Log 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.
Artifacts Overview
Download in Artifact View

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.

Beispielverwendung mit eingebauten Zielen

Hier ist ein Beispiel, wie das <generate/> Element mit einem eingebauten Ziel verwendet wird:

1
2
3
4
5
6
<!-- Dies generiert 10 CUSTOMER Datensätze mit id und speichert sie in CSV, TXT Dateien und druckt sie auch ins Log. -->
<setup>
  <generate name="CUSTOMER" count="10" target="CSV,LogExporter,TXT">
    <key name="id" generator="IncrementGenerator"/>
  </generate>
</setup>

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-Thema.
  • MongoDB: Füge generierte Daten in eine MongoDB-Sammlung 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
<!-- Definiert eine benutzerdefinierte Datenbankumgebung. -->
<database id="testDB" system="test"/>

<!-- Dies generiert 10 CUSTOMER Datensätze und schreibt sie in die 'testDB' Datenbank. -->
<generate name="CUSTOMER" count="10" target="testDB"/>

Schau dir unser Database Tutorial für ein detaillierteres Beispiel an.

Beispielverwendung und Konfiguration von unterstützten Zielen

CSV

1
2
3
4
<!-- Dies generiert 10 CUSTOMER Datensätze mit id und speichert sie in einer CSV-Datei. -->
<generate name="CUSTOMER" count="10" target="CSV">
  <key name="id" generator="IncrementGenerator"/>
</generate>

Wir können auch die CSV-Dateikonfiguration angeben, wie delimiter, quotechar, quoting, encoding, line_terminator und chunk_size:

1
2
3
4
<!-- Dies generiert 10 CUSTOMER Datensätze mit id und speichert sie in einer CSV-Datei mit einem benutzerdefinierten Trennzeichen und Anführungszeichen. -->
<generate name="CUSTOMER" count="10" target="CSV(chunk_size=1000, delimiter=';', quotechar='|')">
  <key name="id" generator="IncrementGenerator"/>
</generate>

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
<!-- Dies generiert 10 CUSTOMER Datensätze mit id und speichert sie in einer JSON-Datei, die in einem Array gespeichert ist. -->
<generate name="CUSTOMER" count="10" target="JSON">
  <key name="id" generator="IncrementGenerator"/>
</generate>

Wir können auch die JSON-Dateikonfiguration angeben, wie use_ndjson, encoding und chunk_size:

1
2
3
4
<!-- Dies generiert 10 CUSTOMER Datensätze mit id und speichert sie in einer NDJSON-Datei, die in 1000er Blöcken mit einer benutzerdefinierten Codierung gespeichert ist. -->
<generate name="CUSTOMER" count="10" target="JSON(chunk_size=1000, encoding='utf-16', use_ndjson=True)">
  <key name="id" generator="IncrementGenerator"/>
</generate>

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
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "index" : { "_index" : "test", "_id" : "2" } }
{ "field1" : "value2" }

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
[
  { "index" : { "_index" : "test", "_id" : "1" } },
  { "field1" : "value1" },
  { "index" : { "_index" : "test", "_id" : "2" } },
  { "field1" : "value2" }
]

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
    <generate name="special" source="script/template_xyz.json"
              sourceScripted="True"
              count="100000"
              cyclic="True"
              target="OpenSearchBulk(chunk_size=20000, use_ndjson=True)"
              pageSize="10000"
    >
        <variable name="randomNumberVar" generator="IncrementGenerator"/>
        <key name="$$_action$$" constant="index"/>
        <key name="$$_index$$" constant="movies"/>
        <key name="$$_id$$" generator="IncrementGenerator"/>
        <key name="$$routing$$" constant="12341243"/>
        <key name="title" constant="Prisoners"/>
        <key name="year" constant="2013"/>
    </generate>

Hier ist der Inhalt der script/template_xyz.json Datei:

1
2
3
4
5
6
[
  {
    "title": "Prisoners",
    "year": "2013"
  }
]

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
[
{ "index" : { "_index" : "movies", "_id" : "1", "routing" : "12341243" } },
{ "title" : "Prisoners", "year" : "2013" },
{ "index" : { "_index" : "movies", "_id" : "2", "routing" : "12341243" } },
{ "title" : "Prisoners", "year" : "2013" },
{ "index" : { "_index" : "movies", "_id" : "3", "routing" : "12341243" } },
{ "title" : "Prisoners", "year" : "2013" }
]