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.

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 |
|
Maximum | Kein dokumentiertes Systemmaximum. In der Praxis sind hohe Werte möglich (z. B. |
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 |
|
Inkrement | +1 pro Iteration |
Verfügbarkeit | Zielseite des Loop-Tasks und alle Kind-Tasks |
Zugriff | Über den in der Konfiguration vergebenen Feldnamen mit |
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ü
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:
Das „ETL‑Feld: Iteration“ erhöht sich um 1 (beginnend bei
1).Der Task führt die Zielseite aus (falls konfiguriert).
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 |
|---|---|---|
| Eltern-Task (Loop) | Quelldaten-Typ: Schleife (Loop), Anzahl Iterationen: |
| Kind-Task | Quelldaten-Typ: Ohne, Zieldaten: CSV-Datei |
Konfiguration Eltern-Task (benachrichtigung_loop):
Quelldaten → Typ: Schleife (Loop)
Anzahl Iterationen:
5ETL-Feld Iteration:
$iterationKeine 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.csvAusgabe:
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:
Variable im ETL/ELT-Eintrag erstellen (Tab „Variablen“).
Einen Task ohne Datenquelle und Datenziel anlegen. Erstellen Sie darin ein eigenes ETL/ELT-Feld.
Auf den globalen Variablennamen verweisen (aus der Zusammenfassung → XML-Debug).
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
ETL/ELT-Tasks: Überblick über die Task-Struktur (Eltern-, Kind-, Geschwister-Tasks)
Eigene ETL/ELT-Felder: Definition und Verwendung eigener Felder
Zwischenablage: Weitergabe von ETL/ELT-Feldern an Geschwister-Tasks
Beispiele (ETL/ELT): Beispiele inkl. Kind-Task-Muster (Beispiel 4) und Variablenverwendung (Beispiel 3)
Quelldaten (ETL/ELT): Übersicht aller verfügbaren Quelldaten-Typen