Zum Inhalt

Skriptbasierte Source-Templates

Verwende sourceScripted="true", wenn eine versionierte Projektdatei als Daten-Template dient und ihre Werte im aktuellen Datensatzkontext ausgewertet werden müssen. Für normale Quelldaten bleibt die Option ausgeschaltet: Mit der Aktivierung werden Dateiinhalte zu ausführbaren Ausdrücken.

Die zwei Ersetzungsformen haben unterschiedliche Verträge:

  • Ein vollständiger Wert wie {40 + 2} wird als Ausdruck ausgewertet und behält den Ergebnistyp. Das Beispiel erzeugt deshalb die Ganzzahl 42, nicht den String "42".
  • Ein Platzhalter in Text wie customer-__row_number__ führt eine String-Ersetzung aus. variablePrefix und variableSuffix können die standardmäßigen __-Begrenzer ersetzen.
data/people.ent.csv
1
2
3
4
name|age|label
Ada|{40 + 2}|customer-__row_number__
Grace|{30 + 7}|customer-__row_number__
Linus|{20 + 9}|customer-__row_number__
scripted-source.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<setup defaultSeparator="|" numProcess="1">
    <generate name="scripted_people" count="3" target="LogExporter">
        <variable name="row_number" generator="IncrementGenerator"/>
        <variable name="person"
                  source="data/people.ent.csv"
                  sourceScripted="true"
                  distribution="ordered"/>
        <key name="name" script="person.name"/>
        <key name="age" script="person.age"/>
        <key name="label" script="person.label"/>
    </generate>
</setup>

Die Ausgabealter sind die Ganzzahlen 42, 37 und 29; die Labels lauten customer-1, customer-2 und customer-3.

Drei Mechanismen nicht vermischen

  • sourceScripted wertet Werte aus einer unterstützten Projektdatei aus.
  • script an einem Feld berechnet genau dieses Feld.
  • script als Ausführungsbasis eines verschachtelten generate besitzt den vollständigen Datensatz- oder Datensatzlistenwert. Ein Dictionary steht für einen Datensatz, eine Liste von Dictionaries für mehrere Datensätze.

Verwende den kleinsten Mechanismus, der die Anforderung ausdrückt. Eine normale Datendatei ist leichter zu prüfen als ein ausführbares Template, und ein typisierter Generator oder eine Field-Intent-Variante ist für Authoring besser validierbar als ein beliebiges Skript.

Grenzen

  • Ausdrücke laufen im aktuellen DATAMIMIC-Evaluationsnamespace; sie werden nicht beim Descriptor-Parsing interpoliert.
  • Ein Klammerausdruck muss den vollständigen Source-Wert belegen. Text um den Ausdruck verhindert die Auswertung.
  • Eingebettete Prefix-/Suffix-Ersetzung erzeugt immer Text.
  • Source-Spalten und Variablen sollten einander nicht überschatten; verwende unterscheidbare fachliche Namen.
  • Begrenze den Read und wähle eine von der Source-Familie unterstützte Distribution.

Siehe sourceScripted, variablePrefix und variableSuffix für den generierten Attributvertrag und Expression-Lebensdauer für Descriptor-Ausdrücke.