Zum Inhalt

Element <key>

Zweck: Definiert ein generiertes, kopiertes, konvertiertes oder skriptbasiertes Produktfeld.

Warum: Verwende dieses Element für ein benanntes Feld, wenn es nicht ausdrücklich die Datensatzidentität darstellt.

Beispiel

1
<key name="customer_id" generator="IncrementGenerator"/>

Entscheidungshilfe

Fachlicher Nutzen: Definiert ein sichtbares Produktfeld und hält dessen Erzeugungs- oder Transformationsregel prüfbar.

  • Verwenden, wenn

    • Beim Hinzufügen eines skalaren Feldes zum Ausgabedatensatz.
  • Anderen Ansatz wählen, wenn

    • Wenn der Wert nur ein Zwischen-Binding ist oder die Datensatzidentität darstellt.
  • Voraussetzungen

    • Platziere key in einem felderzeugenden Elternelement und wähle genau eine kompatible Wertstrategie.
  • Alternativen

    • Verwende id für die stabile Produktidentität. (Siehe: <id>)
    • Verwende variable für nicht exportierte Zwischenwerte. (Siehe: <variable>)
    • Verwende nestedKey für strukturierte Objekte oder wiederholte Datensätze. (Siehe: <nestedKey>)

Vollständige Beispiele

Explizite Strategien zur Felderzeugung wählen

Verwende Konstanten, Generatoren, Skripte, Pattern oder native numerische Bereiche entsprechend der fachlichen Herkunft des Feldwerts.

key-generation-strategies/datamimic.xml
1
2
3
4
5
6
7
8
9
<setup>
    <generate name="field_strategies" count="5" target="LogExporter">
        <key name="status" constant="active"/>
        <key name="sequence" generator="IncrementGenerator"/>
        <key name="doubled" script="sequence * 2"/>
        <key name="reference_code" pattern="[A-Z]{2}[0-9]{4}"/>
        <key name="score" type="int" min="1" max="5" distribution="step"/>
    </generate>
</setup>
Nullwerte, Bedingungen und Fallbacks steuern

Verwende nullQuota für wahrscheinliche Abwesenheit und defaultValue ausschließlich als Fallback eines skriptbasierten Feldes.

key-null-condition-fallback/datamimic.xml
1
2
3
4
5
6
7
<setup>
    <generate name="optional_fields" count="4" target="LogExporter">
        <key name="always_null" type="string" nullQuota="1"/>
        <key name="nickname" script="None" defaultValue="'unknown'"/>
        <key name="visibility" script="'internal'" condition="False" defaultValue="'redacted'"/>
    </generate>
</setup>
Einen rohen Zeitwert bis zur finalen Formatierung erhalten

Führe Zeitarithmetik auf einer unformatierten Variable aus und wende outDateFormat erst auf exportierte Keys an.

key-datetime-arithmetic/datamimic.xml
1
2
3
4
5
6
7
<setup>
    <generate name="invoice_dates" count="1" target="LogExporter">
        <variable name="issued_at" generator="DateTimeGenerator(value='2024-01-15 10:30:00')"/>
        <key name="issue_date" script="issued_at" outDateFormat="%Y-%m-%d"/>
        <key name="due_date" script="issued_at.add_days(30)" outDateFormat="%Y-%m-%d"/>
    </generate>
</setup>
Gewichtete oder eindeutige Inline-Werte auswählen

Verwende weights für gewichtetes Ziehen mit Zurücklegen und unique für eindeutiges Ziehen ohne Zurücklegen; kombiniere beides nie auf demselben key.

key-weighted-and-unique/datamimic.xml
1
2
3
4
5
6
<setup rngSeed="42">
    <generate name="value_pools" count="4" target="LogExporter">
        <key name="tier" values="'standard','premium'" weights="3,1"/>
        <key name="batch_code" values="'A','B','C','D'" unique="true"/>
    </generate>
</setup>

Regeln und ungültige Kombinationen

Ein Feld benötigt genau einen Modus zur Werterzeugung.

Attribute: type, source, values, script, generator, constant, pattern, string

Warum: Ein Feld ohne Typ, Quelle, Wertepool, Skript, Generator, Konstante, Pattern oder String-Template kann keinen Wert erzeugen.

Gültige Kombination
1
<key name="status" constant="active"/>
Ungültige Kombination
1
<key name="status"/>
Wähle genau einen expliziten Erzeugungsmodus für das Feld.

Attribute: source, values, script, generator, constant, pattern, string

Warum: Die Kombination mehrerer Wertquellen würde die Herkunft des Feldwerts mehrdeutig machen.

Gültige Kombination
1
<key name="status" constant="active"/>
Ungültige Kombination
1
<key name="status" constant="active" string="${status}"/>
weights erfordert einen Inline-Pool in values.

Attribute: weights, values

Warum: Jedes Gewicht beeinflusst den entsprechenden values-Eintrag und hat ohne diesen Pool keine Bedeutung.

Gültige Kombination
1
<key name="tier" values="'standard','premium'" weights="3,1"/>
Ungültige Kombination
1
<key name="tier" type="string" weights="3,1"/>
unique erfordert einen Inline-Pool in values.

Attribute: unique, values

Warum: Feldeindeutigkeit zieht ohne Zurücklegen aus expliziten Werten; Generatoren stellen hier keinen endlichen Pool bereit.

Gültige Kombination
1
<key name="code" values="'A','B'" unique="true"/>
Ungültige Kombination
1
<key name="code" generator="IncrementGenerator" unique="true"/>
unique darf nicht mit weights kombiniert werden.

Attribute: unique, weights

Warum: Unique-Auswahl zieht gleichverteilt ohne Zurücklegen; Gewichte beschreiben verzerrte Ziehungen mit Zurücklegen.

Gültige Kombination
1
<key name="code" values="'A','B'" unique="true"/>
Ungültige Kombination
1
<key name="code" values="'A','B'" weights="1,2" unique="true"/>
Optionen zum Quellenlesen erfordern source.

Attribute: source, selector, separator

Warum: selector, separator und weitere Quellenoptionen verändern ausschließlich einen Quellenzugriff.

Gültige Kombination
1
<key name="status" source="data/status.ent.csv" separator=","/>
Ungültige Kombination
1
<key name="status" type="string" separator=","/>
Eine Feld-distribution erfordert einen int- oder float-Wertebereich.

Attribute: distribution, type, min, max

Warum: Die Distribution auf Feldebene formt ein numerisches Raster und ist nicht die Verteilung von Quelldatensätzen.

Gültige Kombination
1
<key name="score" type="int" min="1" max="10" distribution="step"/>
Ungültige Kombination
1
<key name="score" type="string" min="1" max="10" distribution="step"/>
outDateFormat erzeugt einen String und lehnt einen anderen type ab.

Attribute: outDateFormat, type

Warum: Formatierung ist der letzte Darstellungsschritt; nachgelagerte Ausdrücke erhalten nicht mehr den rohen Zeitwert.

Gültige Kombination
1
<key name="created" constant="2026-01-02" outDateFormat="%d.%m.%Y"/>
Ungültige Kombination
1
<key name="created" type="int" constant="2026-01-02" outDateFormat="%d.%m.%Y"/>
Die Granularität eines Integer-Felds muss ganzzahlig sein.

Attribute: type, granularity

Warum: Ein Bruchschritt kann ohne stille Kürzung kein Integer-Raster erzeugen.

Gültige Kombination
1
<key name="score" type="int" granularity="2"/>
Ungültige Kombination
1
<key name="score" type="int" granularity="0.5"/>
defaultValue erfordert script.

Attribute: defaultValue, script

Warum: Der Fallback wird nur ausgewertet, wenn der Skriptwert fehlt oder seine condition die Erzeugung unterdrückt.

Gültige Kombination
1
<key name="nickname" script="None" defaultValue="'unknown'"/>
Ungültige Kombination
1
<key name="nickname" constant="unknown" defaultValue="'fallback'"/>
nullQuota muss zwischen 0 und 1 liegen.

Attribute: nullQuota

Warum: Der Wert ist eine Wahrscheinlichkeit: 0 erzeugt nie null, 1 erzeugt immer null.

Gültige Kombination
1
<key name="middle_name" type="string" nullQuota="0.5"/>
Ungültige Kombination
1
<key name="middle_name" type="string" nullQuota="1.1"/>

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, generate, if, item, iterate, nestedKey, while

Erlaubte Kindelemente:

element

Attribute

Alle 29 Attribute anzeigen

condition

Condition for key data generation.

optional; string; Standardwert: null.

constant

Constant value for key data.

optional; string; Standardwert: null.

converter

Converter for key data transformation.

optional; string; Standardwert: null.

database

Database client id when source equals 'database'.

optional; string; Standardwert: null.

defaultValue

Default value for the key.

optional; string; Standardwert: null.

distribution

Sampling distribution / sequence for ranged numeric key.

optional; string; Standardwert: null; Werte: uniform, cumulated, step, increment, randomWalk, shuffle, wedge, bitreverse, fibonacci, padovan.

generator

Predefined generators for key data generation.

optional; string; Standardwert: null.

granularity

Step width of numeric grid; defaults 1 for int, 0.1 for float. On int, must be whole.

optional; string; Standardwert: null.

inDateFormat

Input date format for key data.

optional; string; Standardwert: null.

max

Maximum value for numerical generator.

optional; number; Standardwert: null.

maxLength

Maximum length for binary payload generation.

optional; integer; Standardwert: null.

mimeType

Optional MIME signature for binary payload generation.

optional; string; Standardwert: null.

min

Minimum value for numerical generator.

optional; number; Standardwert: null.

minLength

Minimum length for binary payload generation.

optional; integer; Standardwert: null.

name

Name of the key.

erforderlich; string.

nullQuota

Null quota for key data generation.

optional; number; Standardwert: null.

outDateFormat

Output date format for key data.

optional; string; Standardwert: null.

pattern

Pattern for key data generation.

optional; string; Standardwert: null.

script

Script for key data generation.

optional; string; Standardwert: null.

selector

Selector for key data generation.

optional; string; Standardwert: null.

separator

Separator for key data.

optional; string; Standardwert: null.

source

Source of data for the key.

optional; string; Standardwert: null.

string

String for the variable data generation.

optional; string; Standardwert: null.

type

Data type of the key.

optional; string; Standardwert: null; Werte: string, int, integer, float, bool, binary.

unique

Emit each value at most once (distinct picks from values, no replacement).

optional; boolean; Standardwert: null.

values

Comma-separated list of values for the key.

optional; string; Standardwert: null.

variablePrefix

Prefix before field's name for string in key generation.

optional; string; Standardwert: null.

variableSuffix

Suffix after field's name for string in key generation.

optional; string; Standardwert: null.

weights

Comma-separated relative weights, one per values entry, for weighted random selection.

optional; string; Standardwert: null.