Zum Inhalt

Erste Schritte

In DATAMIMIC beginnt jedes Projekt mit einem XML-basierten Hauptmodell. Diese Modelle können automatisch aus verbundenen Datenbanken, JSON, XML oder anderen Dateitypen generiert werden.

Das einfachste DATAMIMIC-Modell könnte so aussehen:

1
2
3
4
5
<setup>
  <generate name="output" count="10" target="CSV">
    <key name="counter" generator="IncrementGenerator"/>
  </generate>
</setup>
Erzeugt die folgende Ausgabe in einer CSV-Datei:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
counter
1
2
3
4
5
6
7
8
9
10

Lass uns in das Modell eintauchen, indem wir ein Demoprojekt in der DATAMIMIC UI starten.

Beispiel DATAMIMIC-Modell (Basic Script)

In diesem Beispiel beginnen wir mit der Demo Basic Script, um zu veranschaulichen, wie das Modell von DATAMIMIC funktioniert und welche Dateien Teil eines grundlegenden DATAMIMIC-Projekts sein können.

  • Melde dich an, klicke auf Clone im Kachel 'Basic Script' des Demo Stores, um ein DATAMIMIC-Projekt zu erstellen.

Die Editor-Ansicht enthält die Project Bar oben, den FileTree links und den Editor rechts. Der Editor wechselt dynamisch zwischen verschiedenen Modi, abhängig von den Dateien, die du im FileTree auswählst.

Models::datamimic
1
2
3
4
5
6
7
<setup>
    <include uri="conf/base.properties"/>
    <memstore id="mem"/>

    <include uri="1_prepare.xml"/>
    <include uri="2_generate.xml"/>
</setup>

In diesem DATAMIMIC-Modell zeigen wir eine Konfiguration, die erweiterte Funktionen für die Datengenerierung und -verwaltung nutzt.

  • <setup>: Der <setup>-Knoten ist die Wurzel jedes DATAMIMIC-Modells und umfasst verschiedene Konfigurationen für die Datengenerierung und -verarbeitung. Er ermöglicht erweiterte Konfigurationen, um spezifische Projektanforderungen zu erfüllen.

  • <include uri="conf/base.properties"/>: Diese Direktive beinhaltet eine externe Konfigurationsdatei namens "base.properties". Diese Funktion ermöglicht es dir, Konfigurationseinstellungen zu zentralisieren und in mehreren DATAMIMIC-Modellen wiederzuverwenden, was die Modularität und Wartbarkeit verbessert. Du siehst die referenzierte Datei im Config-Bereich des FileTree.

  • <memstore id="mem"/>: Der <memstore>-Knoten erstellt einen Speicher mit der Kennung "mem". Speicher werden verwendet, um Daten während des Datengenerierungsprozesses temporär zu speichern und zu manipulieren, was Flexibilität bei Datenumwandlungen und -berechnungen bietet.

  • <include uri="1_prepare.xml"/> und <include uri="2_generate.xml"/>: Diese Direktiven beinhalten weitere Modelle, "1_prepare.xml" und "2_generate.xml". Dieser modulare Ansatz ermöglicht es dir, deine Logik zur Datengenerierung in separate Dateien aufzuteilen, um eine bessere Organisation und Wiederverwendbarkeit zu erreichen.

Schauen wir uns nun das Modell 1_prepare an:

Models::1_prepare
1
2
3
<setup>
  <iterate name="CARS" source="data/car.ent.csv" target="mem"/>
</setup>

In diesem DATAMIMIC-Modell zeigen wir eine Konfiguration, die die iterativen Datengenerierungsfähigkeiten für die Verarbeitung von Daten aus einer externen Quelle nutzt.

  • <iterate name="CARS" source="data/car.ent.csv" target="mem"/>: Innerhalb des <setup>-Knotens ist der <iterate>-Knoten mit dem Namen "CARS" definiert. Diese Iterationskonfiguration legt Folgendes fest:
  • name="CARS": Weist der Iteration einen Namen zu, damit du sie innerhalb des Modells referenzieren kannst.
  • source="data/car.ent.csv": Gibt die Datenquelle für die Iteration an, die eine Entitätsdatei unter Entity Data car ist.
  • target="mem": Gibt an, dass die während dieser Iteration generierten Daten im Speicher ("mem") gespeichert werden sollen. Diese Speicherung im Speicher ermöglicht eine weitere Manipulation und Verarbeitung der Daten innerhalb des DATAMIMIC-Modells.

Dieses Beispiel zeigt, wie DATAMIMIC effizient durch externe Datenquellen iterieren und deren Daten im Speicher für eine weitere Verwendung speichern kann.

Wir gehen weiter und schauen uns das nächste Modell 2_generate an:

Models::2_generate
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<setup>
    <generate name="customer" count="{customer_count}" target="">
        <variable name="cars_data" type="CARS" source="mem" cyclic="True"/>
        <variable name="person" entity="Person(min_age=21, max_age=67, female_quota=0.5)"/>
        <variable name="company" entity="Company"/>
        <key name="bool" generator="BooleanGenerator"/>
        <key name="tc_creation" generator="IntegerGenerator(max=999999999)"/>
        <key name="car" script="cars_data.brand"/>
        <key name="first_name" script="person.given_name"/>
        <key name="last_name" script="person.family_name"/>
        <key name="birthDate" script="person.birthdate" converter="DateFormat('%d.%m.%Y')"/>
        <key name="superuser" values="True, False"/>
        <key name="email" script="'info@' + company.short_name.replace(' ', '-') + str(tc_creation) + '.de'"/>
        <key name="active" source="data/active.wgt.csv" separator="|"/>
    </generate>
</setup>
In diesem DATAMIMIC-Modell veranschaulichen wir eine umfassende Datengenerierungskonfiguration zur Erstellung von Kundenregistern. Diese Konfiguration nutzt verschiedene Variablen, Entitäten und Generatoren, um realistische Kundendaten zu generieren.

  • <generate name="customer" count="{customer_count}" target="">: Innerhalb des <setup>-Knotens ist der <generate>-Knoten definiert, um einen Datensatz namens "customer" zu erstellen. Die wichtigsten Merkmale dieser Generierungskonfiguration sind:
  • name="customer": Weist dem generierten Datensatz einen Namen zu, damit du ihn innerhalb des Modells referenzieren kannst.
  • count="{customer_count}": Gibt die Anzahl der zu generierenden Kundendatensätze an. Der Wert wird aus der base-Datei im Abschnitt Config parametrisiert, was Flexibilität in der Anzahl ermöglicht.
  • target="": Die Zielformate für die generierten Daten sind in diesem Beispiel leer gelassen, was bedeutet, dass die Daten ohne ein spezifisches in diesem Beispiel definiertes Format generiert werden. Allerdings wird immer ein begrenzter Teil für die DATAMIMIC UI Preview erstellt.

  • <variable name="cars_data" type="CARS" source="mem" cyclic="True"/>: Diese Variablendefinition namens "cars_data" ist mit dem Typ "CARS" verknüpft, was bedeutet, dass sie Daten aus dem Speicher ("mem") abruft, die während der Ausführung in der vorherigen 1_prepare angereichert wurden. Das Attribut "cyclic" ist auf "True" gesetzt, was darauf hinweist, dass Daten aus dem CARS-Set (nur 3 Artikel sind in der Entity File car vorhanden) wiederverwendet werden können. Andernfalls könnte DATAMIMIC nicht mehr als 3 Kundendatensätze erstellen.

  • <variable name="person" entity="Person(min_age=21, max_age=67, female_quota=0.5)"/>: Die Variable "person" ist mit der Entität "Person" verknüpft und legt die Generierung von Einzelprofilen mit Altersbeschränkungen und einer Frauenquote fest.

  • <variable name="company" entity="Company"/>: Die Variable "company" ist mit der Entität "Company" verknüpft, um firmenbezogene Daten zu generieren.

  • <key>: Mehrere <key>-Elemente definieren Attribute jedes Kundendatensatzes. Zum Beispiel:

    • "bool" wird mit dem "BooleanGenerator" generiert.
    • "tc_creation" wird mit dem "IntegerGenerator" mit einer maximalen Wertbeschränkung generiert.
    • "car" wird skriptiert, um Daten zur Automarke aus "cars_data.brand" zu extrahieren.
    • "first_name" und "last_name" werden mit personenbezogenen Daten skriptiert.
    • "birthDate" wird skriptiert und in ein spezifisches Datumsformat umgewandelt.
    • "superuser" hat die vordefinierten Werte "True" und "False".
    • "email" wird auf Basis von Firmendaten skriptiert.
    • "active" stammt aus einer externen CSV-Datei mit einem spezifizierten Trennzeichen.

Dieses Beispiel zeigt die Kombination von Variablen, Entitäten, Generatoren und dateibasierten Datenquellen.

  • Starte die Verarbeitung und Erstellung der Daten, indem du auf die Schaltfläche Generate in der Projekt-Leiste klickst.
  • Klicke auf 'Previews', um eine Vorschau zu sehen, sobald die Verarbeitung abgeschlossen ist.
  • Oder klicke auf 'Logs', um detaillierte Einblicke in die Aufgabe, ihre Verarbeitungsgeschwindigkeit, Durchsätze und mehr zu erhalten.
  • Oder navigiere zu 'Tasks', um einen Überblick über alle Aufgabenausführungen und deren Status in deinem Projekt zu erhalten. In der Ansicht 'Task' hast du verschiedene Kontrollmöglichkeiten über die laufenden oder vergangenen Aufgabenausführungen.
  • In der Ansicht 'Task' kannst du außerdem auf das 'Artifact'-Symbol klicken und die generierte(n) Datei(en) zum Download auswählen.

Zusammenfassung

  • Kenne das XML-basierte DATAMIMIC-Modell mit seinen wichtigsten Knoten <setup\>, <generate\>, <variable\> und <key\>.
  • Checke ein Projekt aus dem Demo-Store aus und nutze es.
  • Nutze die Ansichten Editor, Jobs, Tasks und Preview.
  • Erfahre mehr über die DATAMIMIC-Dateitypen Model, Entity Data, Weighting Data und Config.