Schleife (Loop) (Quelle ETL/ELT)

Prev Next

Der Quelldaten-Typ Schleife (Loop) wiederholt einen ETL/ELT-Task eine festgelegte Anzahl von Malen. Typische Anwendungsfälle:

  • Dateien wiederholt erzeugen

  • Kind-Tasks mehrfach ausführen

  • Eine feste Anzahl von Schritten iterativ abarbeiten

Der Loop ist ein Quelldaten-Typ im ETL/ELT‑Modul. Er erzeugt pro Iteration eine Datenzeile. Weitere Quelldaten-Typen sind Datenbank, CSV/Text, XML, JSON und Dateiordner.

Konfigurationsansicht des Quelldaten-Typs Schleife (Loop)

Einstellungen

(1) ETL/ELT-Tasks

Ein Loop-Task führt Kind-Tasks oder die Zielseite des aktuellen Tasks mehrfach aus. Eingangsdaten sind nicht erforderlich.

Die erzeugten Datenzeilen verarbeiten Sie auf zwei Wegen. Entweder über die Zieldaten des Loop-Tasks oder über einen Kind-Task. Kind-Tasks haben automatisch Zugriff auf die ETL/ELT-Felder des Eltern-Tasks. Geschwister-Tasks greifen auf diese Felder nur über die Zwischenablage zu.

Jeder ETL/ELT-Task hat über die Systemvariable $rownum Zugriff auf die aktuelle Iterationsnummer.

(2) Anzahl Iterationen

Bestimmt, wie oft die Schleife läuft. Der Wert ist eine positive Ganzzahl.

Eigenschaft

Beschreibung

Typ

Positive Ganzzahl

Minimum

1 (mindestens ein Durchlauf)

Maximum

Kein dokumentiertes Systemmaximum. In der Praxis sind hohe Werte möglich (z. B. 999).

Selbst erstellte globale ETL/ELT-Variablen sind im selben Task zur Laufzeit noch nicht bekannt. Sie lassen sich dort nicht direkt auflösen. Systemvariablen wie $rownum sind dem Skript dagegen bereits zur Laufzeit bekannt. Für einen dynamischen Iterationswert ist ein Workaround erforderlich. Weitere Informationen finden Sie im Abschnitt Hinweise zu Variablen.

(3) ETL Feld: Iteration

Der Loop-Task stellt dieses ETL/ELT-Feld automatisch bereit. Es enthält die aktuelle Iterationsnummer. Sie lesen es auf der Zielseite oder in Kind-Tasks aus.

Eigenschaft

Beschreibung

Startwert

1 (die erste Iteration hat den Wert 1)

Inkrement

+1 pro Iteration

Verfügbarkeit

Zielseite des Loop-Tasks und alle Kind-Tasks

Zugriff

Über den in der Konfiguration vergebenen Feldnamen mit $-Präfix (z. B. $loop_iteration)

Andere Quelldaten-Typen folgen demselben Muster. Der Quelldaten-Typ „Dateiordner“ stellt die Felder $FILENAME und $PATH_AND_FILE automatisch bereit. Der Loop-Task stellt das Iterationsfeld auf dieselbe Weise bereit.

Verwendung in Kind-Tasks: In einem Kind-Task referenzieren Sie das Iterationsfeld direkt. Verwenden Sie dazu den Feldnamen mit $-Präfix. Mögliche Stellen sind Bedingungen, Ausgaben der Zieldaten oder eigene ETL/ELT‑Felder. Das Burger-Menü Burger menu icon in den Zieldaten zeigt alle verfügbaren ETL/ELT-Felder an. Dazu gehören auch die Felder des Eltern-Tasks.

Verwendung in Geschwister-Tasks: Geschwister-Tasks haben keinen direkten Zugriff auf die ETL/ELT-Felder des Loop-Tasks. Um das Iterationsfeld weiterzugeben, nutzen Sie die Zwischenablage.

Ablauf

Der Loop-Task erzeugt so viele Datenzeilen, wie im Feld „Anzahl Iterationen“ angegeben. Jede Datenzeile entspricht einer Iteration. Pro Iteration führt der Task folgende Schritte aus:

  1. Das „ETL‑Feld: Iteration“ erhöht sich um 1 (beginnend bei 1).

  2. Der Task führt die Zielseite aus (falls konfiguriert).

  3. Der Task führt alle Kind-Tasks aus (falls vorhanden).

Der Loop wiederholt diesen Ablauf, bis alle Iterationen abgeschlossen sind.

Praxisbeispiel: Mehrere Dateien mit laufender Nummer erzeugen

Szenario: Sie möchten fünf Benachrichtigungsdateien erzeugen. Jede trägt eine laufende Nummer im Dateinamen und im Inhalt.

Aufbau:

Task

Typ

Beschreibung

benachrichtigung_loop

Eltern-Task (Loop)

Quelldaten-Typ: Schleife (Loop), Anzahl Iterationen: 5, ETL‑Feld Iteration: $iteration

benachrichtigung_loop.1

Kind-Task

Quelldaten-Typ: Ohne, Zieldaten: CSV-Datei

Konfiguration Eltern-Task (benachrichtigung_loop):

  • Quelldaten → Typ: Schleife (Loop)

  • Anzahl Iterationen: 5

  • ETL-Feld Iteration: $iteration

  • Keine Zieldaten im Eltern-Task (der Kind-Task übernimmt die Verarbeitung)

Konfiguration Kind-Task (benachrichtigung_loop.1):

  • Quelldaten → Typ: Ohne

  • Zieldaten → Typ: Datei (CSV)

  • Dateiname: ./webapps/root/output/benachrichtigung_$iteration.csv

  • Ausgabe: Benachrichtigung Nr. $iteration

Ergebnis: Nach dem Testlauf erzeugt der Task fünf Dateien:

benachrichtigung_1.csv → Inhalt: "Benachrichtigung Nr. 1"
benachrichtigung_2.csv → Inhalt: "Benachrichtigung Nr. 2"
benachrichtigung_3.csv → Inhalt: "Benachrichtigung Nr. 3"
benachrichtigung_4.csv → Inhalt: "Benachrichtigung Nr. 4"
benachrichtigung_5.csv → Inhalt: "Benachrichtigung Nr. 5"

Dieses Beispiel zeigt das typische Muster: Ein Eltern-Task führt pro Quelldatenzeile einen Kind-Task aus. Der Unterschied besteht darin, dass der Loop die Datenzeilen erzeugt. Eine CSV-Datei als Datenquelle ist nicht nötig.

Hinweise zu Variablen

Systemvariable $rownum:
Jeder ETL/ELT-Task stellt die Systemvariable $rownum bereit. Sie enthält die aktuelle Iterationsnummer. Die Variable ist unabhängig vom Loop-Task und steht bei allen Quelldaten-Typen zur Verfügung.

Selbst erstellte ETL/ELT-Variablen:
Globale Variablen legen Sie im Tab „Variablen“ der Pipeline an. Im selben Task lassen sie sich nicht direkt auflösen. Zur Laufzeit sind sie noch nicht bekannt. Gehen Sie wie folgt vor:

  1. Variable im ETL/ELT-Eintrag erstellen (Tab „Variablen“).

  2. Einen Task ohne Datenquelle und Datenziel anlegen. Erstellen Sie darin ein eigenes ETL/ELT-Feld.

  3. Auf den globalen Variablennamen verweisen (aus der Zusammenfassung → XML-Debug).

  4. Einen Kind-Task erstellen. Verwenden Sie in dessen Bedingung das ETL/ELT-Feld mit $-Präfix.

Die Variablentypen sind nicht cast-sicher. Falls erforderlich, casten Sie den Typ direkt im Datenbankstatement.

Verwandte Themen