# Expressions

Bei der Konfiguration von Pipelines erlauben gewisse Felder vom Typ Expression die Verwendung von Ausdrücken ("Expressions"). Diese Expressions werden zur Laufzeit durch tatsächliche Werte ersetzt.

Weitere Information können in der Dokumentation der Jinja Templating Sprache (opens new window) nachgeschlagen werden.

Aus Sicherheitsgründen geschieht die Evaluation der Expressions in einer restriktiven "Sandbox"-Umgebung. Aus diesem Grund sind gewissen Funktionalitäten der Jinja Templating Sprache eingeschränkt.

# Beispiel

Konfiguration einer HTTP-Section mit einer Expression:

{
  "section": "HTTP",
  "options": {
    "url": "/path/to/details/{{ item['@id'] }}",
    "foreach": {
      "target_path": ""
    }
  }
}

Die Expression {{ item['@id'] }} wird zur Laufzeit durch tatsächliche Werte ersetzt, basierend auf dem item in der Pipeline.

Angenommen die vorhergehende Section gibt folgende Daten in der Pipeline weiter:

[
  { "@id": 1 },
  { "@id": 2 },
  { "@id": 3 }
]

Dann werden in der HTTP-Section 3 Requests abgesetzt an folgende URLs, die durch das Evaluieren der Expressions entstanden sind:

  • /path/to/details/1
  • /path/to/details/2
  • /path/to/details/3

# Verfügbare Kontext-Variablen

Folgende Variablen können in den meisten Fällen für Expressions verwendet werden:

  • item

    • Das Item in der ETL Pipeline, auf welchem die Section gerade operiert.
    • Typ: Dict
    • Beispiel: {{ item['@id'] }}
  • store

    • Ermöglicht den Zugriff auf die Store-Daten im momentan gesetzten Kontext.
    • Typ: Dict
    • Beispiel: {{ store.store_key }}

# Filters

Expressions unterstützen die Builtin Filters (opens new window) der Jinja Template Engine. Zusätzlich können nachfolgende Filter verwendet werden.

# fromjson

fromjson(value)

Der fromjson Filter wird zum Parsen eines JSON Strings verwendet.

# chain

chain(value)

Der chain Filter wird verwendet um mehrere Liste aneinander zu hängen.

>>> [[1, 2], [3, 4]]|chain
[1, 2, 3, 4]

# zip

zip(value)

Der zip-Filter kombiniert Elemente aus mehreren Listen.

Beispiel:

>>> [["a", "b", "c"], [1, 2, 3]] | zip
[("a", 1), ("b", 2), ("c", 3)]

# nossikon

nossikon(value)

Mit dem nossikon-Filter wird Text mit der Nossikon Schriftart dargestellt. Diese Schriftart ist für historische Phonetische Zeichen optimiert.