Zeilen mit Abhängigkeiten
Im vorherigen Beispiel gab es keinerlei Abhängigkeiten zwischen den Zeilen in der Eingangsdatei, meistens gibt es die aber.
Das folgende Listing zeigt das Beispiel einer Datei mit Auftragsköpfen und zugeordneten Auftragspositionen. Ein Auftragskopf steht in einer eigenen Zeile und danach folgen die zugehörigen Auftragspositionen. Die Datei enthält drei Aufträge mit jeweils einer, zwei und drei Positionen. Die Positionen gehören jeweils zum vorhergehenden Auftragskopf.
#OrderHeader=OH
#OrderPosition=OP
OH;Order1
OP;Pos1 O1
OH;Order2
OP;Pos1 O2
OP;Pos2 O2
OH;Order3
OP;Pos1 O3
OP;Pos2 O3
OP;Pos3 O3
Eine solche hierarchische Abhängigkeit kann mit Lobster_data auf zwei Arten abgebildet werden.
Der erste Screenshot zeigt die Quellstruktur für die Beispieldatei. Dabei wurden der Auftragskopf und die Position auf oberster Ebene eingefügt.
Der zweite Screenshot zeigt eine alternative Quellstruktur für die Beispieldatei. Dabei wurden der Auftragskopf und die Position in einen Oberknoten Order verschoben.
Der Unterschied der beiden Lösungen liegt darin, dass für die Quellstruktur in der ersten Abbildung mit jedem Auftragskopf ein neues Datenblatt angelegt wird, während für die Quellstruktur in der zweiten Abbildung nur ein Datenblatt angelegt wird, das alle drei Aufträge enthält.
Falls keine Abhängigkeiten beim Ausgang zwischen den Aufträgen hergestellt werden müssen, ist die erste Lösung zu bevorzugen. Der Grund dafür ist, dass der Parser innerhalb eines Datenblatts arbeitet. Je kleiner die Datenmenge in einem Datenblatt, desto schneller arbeitet der Parser (aufgrund der hohen Verarbeitungsgeschwindigkeit von Lobster_data ist dies erst ab großen Datenmengen messbar).
Sollen im Ausgang Abhängigkeiten zwischen den Aufträgen hergestellt werden (z. B. die Aufträge in einer Sendung zusammenzufassen), muss die Lösung in der zweiten Abbildung gewählt werden. Bei dieser Lösung entstehen die drei Aufträge in einem Datenblatt, hier können Abhängigkeiten erstellt werden (mehr dazu im Abschnitt Phase 3/4 (GUI)).
Immer wenn der erste Knoten der obersten Ebene in der Quellstruktur (bei einem CSV-Parser) betreten wird und mehrere Knoten auf oberster Ebene vorhanden sind, beginnt der Parser ein neues Datenblatt. Im Beispiel in der ersten Abbildung wird demzufolge ein neues Datenblatt angefangen, wenn ein Auftragskopf eingelesen wird. Dadurch entsteht pro Auftrag ein Datenblatt, in dem Auftragskopf und zugehörige Positionen enthalten sind.
Die Reihenfolge der Felder in den Knoten bestimmt, welche Werte innerhalb der Zeilen den Feldern im Quellbaum zugewiesen werden.