Datenschleifen in Transformationen in Jitterbit Studio steuern
Einführung
Schleifenknoten Iterator-Linien, die die Quell- und Zielknoten angeben, deren zugeordnete Felder eine Transformation durchlaufen wird, werden automatisch während des Zuordnungsprozesses generiert, entweder bei Verwendung von automatischer Zuordnung oder bei manueller Zuordnung von Quellobjekten zu Zielfeldern.
Normalerweise ist die automatische Generierung von Schleifenknoten während der Zuordnung für den Datensatz geeignet. Wenn die Daten jedoch mehrere Sätze wiederholter Datenwerte enthalten – oder mehrere Schleifenknoten – müssen Sie möglicherweise einen Schleifenknoten manuell definieren, um die Daten zu zwingen, auf einem anderen Knoten zu schleifen. Bei Validierungsfehlern siehe Zuordnungskonflikte beheben.
In bestimmten Situationen kann ein zugeordnetes Quellfeld eine Iterator-Linie darüber haben, die so konfiguriert ist, dass neue Datensätze auf einer Ebene im Ziel aus einer niedrigeren Ebene in der Quelle generiert werden. Diese Zuordnungskonfiguration ist gültig, führt aber möglicherweise nicht zu den gewünschten Daten im Ziel. In diesem Fall müssen Sie möglicherweise die Zuordnung manuell anpassen.
Sie können auch bei Bedarf Schleifenknoten entfernen, sowohl automatisch generierte als auch manuell definierte.
Schleifenknoten verstehen
Schleifenknoten steuern, wie Transformationen wiederholte Datenstrukturen wie Arrays und Listen durchlaufen. Sie verwenden visuelle Iterator-Linien, um den Datenfluss von Quelle zu Ziel anzuzeigen.
Schleifenknoten erfüllen drei Hauptaufgaben:
-
Datendurchlauf steuern: Sie bestimmen, welche Datenelemente sich wiederholen und wie oft.
-
Verarbeitungsreihenfolge definieren: Sie legen die Reihenfolge für die Verarbeitung verschachtelter Datenstrukturen fest.
-
Datenbeziehungen zuordnen: Sie verbinden verwandte Daten zwischen Quell- und Zielstrukturen.
Schleifenknoten erkennen Sie an ihren Iterator-Linien:

Durchgehend schwarze Linien verbinden Quellknoten mit Zielknoten. Diese Linien zeigen genau, wo Daten schleifen werden.
Hinweis
Mehrere Iterator-Linien werden hierarchisch verarbeitet, von oben nach unten der Zielstruktur.
Wenn eine Transformation ausgeführt wird, steuern Schleifenknoten den Datenfluss:
-
Die Transformation beginnt mit der obersten (äußersten) Schleife.
-
Jedes Quellelement generiert einen oder mehrere Zieldatensätze.
-
Alle zugeordneten Felder innerhalb der Schleife werden für jede Iteration verarbeitet.
-
Innere Schleifen werden vollständig abgeschlossen, bevor die oberste/äußere Schleife fortgesetzt wird.
-
Die Verarbeitung wird fortgesetzt, bis alle Quelldaten verbraucht sind.
Wann Schleifenknoten automatisch erstellt werden
Schleifenknoten erscheinen automatisch, wenn Sie:
- Felder zwischen wiederholten Strukturen zuordnen (Arrays mit
[0+]oder[1+]Kardinalität) - Automatische Zuordnung zwischen kompatiblen Quell- und Ziel-Arrays verwenden
- Die erste Feldzuordnung zwischen wiederholten Strukturen erstellen
Für die automatische Schleifenknotenerstellung müssen diese Anforderungen erfüllt sein:
- Sowohl Quell- als auch Zielknoten müssen Wiederholung unterstützen (
[0+]oder[1+]Kardinalität) - Sie müssen mindestens ein Feld zwischen den wiederholten Strukturen zuordnen
Schleifenknoten definieren
Bei Verwendung von automatischer Zuordnung werden Schleifenknoten automatisch generiert.
Schleifenknoten können auch manuell auf Zielknoten definiert werden, die beide dieser Bedingungen erfüllen:
- Die Kardinalität des Zielknotens muss
0+oder1+sein. - Es darf keine Zuordnungen auf direkten Blattfeldern innerhalb des Zielknotens geben.
Darüber hinaus muss die Kardinalität des Quellknotens, der zum Erstellen des Zielschleifenknotens verwendet wird, 0+ oder 1+ sein.
Um einen Schleifenknoten manuell zu definieren, ziehen Sie einen qualifizierenden Quellknoten auf einen qualifizierenden Zielknoten:

Beim Ablegen des Quellknotens auf dem Zielknoten wird ein Menü angezeigt. Wählen Sie die Option Schleifenknoten definieren.
Der Schleifenknoten ist nun definiert, und die Iterator-Linie wird angezeigt, die angibt, wie die Transformation durch den Quelldatensatz iteriert. Die Linie wird auch dann angezeigt, wenn noch keine direkten Blatt-Zuordnungen für Felder unter dem Knoten vorhanden sind. Schließen Sie die Zuordnung von Feldern unter dem Schleifenknoten wie gewohnt ab:

Eingeklappte Knoten, die Schleifenknoten-Zuordnungen enthalten, werden mit einer gepunkteten Iterator-Linie angezeigt. Klicken Sie auf das Caret , um untergeordnete Knoten zu erweitern, bis Sie den Schleifenknoten finden:

Automatisch generierte Schleifenknoten manuell anpassen
Nach der automatischen Generierung von Schleifenknoten müssen diese möglicherweise manuell angepasst werden. Im folgenden Beispiel stellt eine Anfrage-Transformation Filter bereit, die in einer HubSpot-Suchaktivität verwendet werden, um Firmendatensätze abzufragen. Unten zeigen wir zunächst die Ausgabe bei Verwendung des automatisch generierten Schleifenknotens und dann, wie sich die Ausgabe ändert, wenn der Schleifenknoten manuell neu definiert wird.
Automatische Schleifenknoten-Generierung
Nach der automatischen Zuordnung und automatischen Generierung eines Schleifenknotens zeigt die Transformations-Zuordnung eine Datenschleife auf dem zweiten item-Knoten des Ziels:

Wenn die obige Zuordnung mit den folgenden Eingabedaten verarbeitet wird, ergibt sich diese Ausgabe, die die Eingabestruktur in eine einzelne Filterliste vereinfacht:
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
},
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
Manuelle Schleifenknoten-Definition
Um den Knoten zu ändern, auf dem die Daten iterieren, ziehen Sie den zweiten item-Knoten der Quelle auf den ersten item-Knoten des Ziels und wählen Sie Schleifenknoten definieren:

Wir sehen nun die Iterator-Linie des Schleifenknotens auf dem ersten und zweiten item-Knoten des Ziels:

Wenn die obige Zuordnung mit denselben Eingabedaten verarbeitet wird, die bei der automatischen Schleifenknoten-Generierung verwendet wurden, ergibt sich die gewünschte Ausgabe, die die Eingabestruktur beibehält:
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
{
"filterGroups": [
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "AZ INC"
}
]
},
{
"filters": [
{
"operator": "EQ",
"propertyName": "name",
"value": "IQ services"
},
{
"operator": "EQ",
"propertyName": "hs_object_id",
"value": "4403735338"
}
]
}
]
}
Zuordnung in nicht übereinstimmenden Quell- und Ziel-Schleifenknoten manuell anpassen
Ein zugeordnetes Quellfeld kann eine Iterator-Linie darüber haben, die so konfiguriert ist, dass neue Datensätze auf einer Ebene im Ziel aus einer niedrigeren Ebene in der Quelle generiert werden (auch durch ein Informationssymbol neben dem Quellknoten angezeigt). Diese Zuordnungskonfiguration ist gültig, führt aber möglicherweise nicht zu den gewünschten Daten im Ziel.
Sie möchten möglicherweise die Zuordnung manuell anpassen, wenn eine der folgenden Bedingungen auf Ihren Anwendungsfall zutrifft:
- Sie möchten keine doppelten Werte in separaten Datensätzen in der Zieldatei erstellen.
- Sie möchten keine Werte aus den Datensätzen in der Zieldatei auslassen (aufgrund eines fehlenden untergeordneten Datensatzes).
- Sie haben Quelldaten, bei denen sich der gewünschte untergeordnete Datensatz in einem konstanten Index befindet oder durch einen Lookup-Wert im Array der untergeordneten Datensätze finden lässt.
- Sie benötigen keine Werte aus anderen untergeordneten Datensätzen im Array der untergeordneten Datensätze.
Die folgenden Unterabschnitte zeigen einen Anwendungsfall, bei dem Zuordnungsanpassungen erforderlich sind, um Werte aus den Quelldatensätzen in der Zieldatei beizubehalten. Diese Animation bietet einen Überblick über die nachfolgend beschriebenen Schritte:

In diesem Szenario haben die Quell- und Zielschemas diese Merkmale:
| Quelle | Ziel |
|---|---|
|
|

Automatische Generierung von Loop-Knoten
Wenn wir damit beginnen, Felder (wie Name) vom Quellknoten auf oberster Ebene zum Zielknoten auf oberster Ebene zuzuordnen, wird automatisch eine Loop-Knoten-Iterator-Linie vom Quell-customer/item-Array-Knoten zum Ziel-customer/flat-Array-Knoten generiert. Dies zeigt an, dass für jeden neuen Kundendatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:

Wenn wir das erste Feld im wiederholten Quell-Adressknoten (Street) dem entsprechenden Ziel-Adressfeld (street) zuordnen, wird eine Meldung angezeigt, die darauf hinweist, dass neue Zieldatensätze von einer niedrigeren Ebene in der Quelle generiert werden:
Dialogtext
Iterator wird neu konfiguriert
Das Erstellen dieser Zuordnung konfiguriert die obige Iterator-Linie so, dass neue Zieldatensätze von einer niedrigeren Ebene in der Quelle generiert werden. Weitere Informationen zur Generierung von Loop-Knoten finden Sie unter link.
Dieser Dialog enthält auch ein Kontrollkästchen Diese Meldung während dieser Bearbeitungssitzung nicht mehr anzeigen, das den Dialog nur für Ihre aktuelle Bearbeitungssitzung unterdrückt.
Tipp
Um diesen Dialog dauerhaft in allen Bearbeitungssitzungen und Projekten zu unterdrücken, aktivieren Sie Transformations-Iterator-Warnungen immer unterdrücken in Ihren Studio-Kontoeinstellungen.
Wenn Sie auf Bestätigen klicken, wird das Quellende der Loop-Knoten-Iterator-Linie automatisch vom Quell-customer/item-Array-Knoten auf oberster Ebene zum verschachtelten addresses/item-Array-Knoten verschoben (auch durch ein Informationssymbol neben dem Quellknoten gekennzeichnet).
Für dieses Beispielszenario bedeutet dies, dass für jeden neuen Adressdatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:

Dies führt dazu, dass ein einzelner Kundendatensatz aus der Quelle im Zieldokument einmal für jede Adresse im Quelladress-Array dieses Kunden angezeigt wird. Jeder Kundendatensatz hat die gleichen Werte auf der obersten Ebene mit eindeutigen Werten in den Adressfeldern. Wenn der erste Kundendatensatz aus der Quelle beispielsweise zwei Adressen enthält, enthält das Ziel zwei Kundendatensätze: einen mit der ersten Adresse und einen mit der zweiten Adresse.
Wichtig
Bei der automatischen Generierung von Schleifenknoten in diesem Szenario generiert ein Kundendatensatz aus der Quelle ohne Adressen keinen Kundendatensatz im Ziel.
Zuordnung von einer Multi-Instance-Quelle zu einem Single-Instance-Ziel
Wenn der generierte Zielschleifenknoten von mehr als einem Quellschleifenknoten abhängt, müssen Sie möglicherweise einen Vorkommen-Konflikt bei der Zuordnung beheben.
Wenn die Quelldatenstruktur ein Multi-Objekt-Array ist und einer Zieldatenstruktur mit einem einzelnen Objekt zugeordnet wird, wird dieses Dialogfeld angezeigt:
Dialogtext
Vorkommen-Konflikt
Eine Multi-Instance-Quelle kann nicht einem Single-Instance-Ziel zugeordnet werden. Möchten Sie die Zuordnung ändern, um die erste Instanz für jede Quelle zu verwenden?
Um die erste Instanz der Quelle in der Zuordnung zu verwenden, wählen Sie Ja, um automatisch ein Hashsymbol (#) im Referenzpfad des Datenelements einzufügen. Dies bedeutet, dass nur der erste Datensatz zugeordnet wird. Ein vollständiges Beispiel finden Sie unter Datenstrukturen.
Wenn Sie nicht die erste Instanz der Quelle verwenden möchten, können Sie Instanzen manuell angeben (siehe unten) oder andere Logik mit Instanzauflösungsfunktionen verwenden (siehe Instanzfunktionen).
Manuelle Zuordnungsanpassung
In unserem Beispielszenario möchten wir keine Kundendatensätze aufgrund einer fehlenden Adresse verlieren, daher müssen wir jede Zuordnung auf Feldebene des untergeordneten Arrays manuell anpassen. Wenn jede Zuordnung angepasst wird, verschiebt sich die generierte Schleifenknoten-Iterator-Zeile automatisch an die richtige Position für die gewünschte Zielausgabe (basierend auf der Zuordnungsanpassung).
Um die Zuordnung für jedes Zielfeld im untergeordneten Array (z. B. street) anzupassen, fügen wir ein Hashsymbol gefolgt von einer Ganzzahl zum Adressen-/Element-Array im Zuordnungsskript hinzu. Das Hinzufügen der Referenz #1 gibt das erste Element eines Arrays zurück, was zur Erstellung eines einzelnen Kundendatensatzes im Ziel für jeden Kundendatensatz in der Quelle führt. Mit dieser Konfiguration enthält jeder im Ziel erstellte Kundendatensatz nur die erste Adresse aus dem Adress-Array des Kundendatensatzes aus der Quelle – die verbleibenden Adressen werden nicht ins Ziel verschoben.

Tipp
Dieses Beispiel verwendet die Hash-Syntax, die unter Referenzpfad-Notation beschrieben wird.
Um das zweite oder nachfolgende Element des Arrays zurückzugeben, geben Sie #2, #3 usw. an. Die Funktion FindValue kann auch verwendet werden, um ein Array nach einem Wert zu durchsuchen und das zugehörige Feld zurückzugeben. Beispielsweise könnte das Zuordnungsskript für das Zielfeld country auf einem Type von Billing basieren:
<trans>
FindValue("Billing", json$item.Addresses$item#.Type$, json$item.Addresses$item#.Country$)
</trans>
Beachten Sie, dass bei Verwendung von Instanzfunktionen das Hashsymbol automatisch eingefügt wird, wo erforderlich.
Nach dem Hinzufügen der Elementreferenz (#1) in das Feldmapping-Skript kehrt die Schleifenknoten-Iterator-Zeile automatisch zum Quell-Top-Level-Knoten des Kunden-/Elementarrays zurück. Dies zeigt, dass für jeden neuen Kundendatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:

Beim Mapping zu zusätzlichen Feldern im untergeordneten Array kehrt die Schleifenknoten-Iterator-Zeile zur ursprünglichen Position zurück. Der Prozess des Hinzufügens der Elementreferenz (#1) muss wie oben beschrieben für jedes Feldmapping im Array wiederholt werden.
Schleifenknoten und Mappings entfernen
Optionen zum Entfernen eines manuell definierten Schleifenknotens oder zum Entfernen eines beliebigen Schleifenknotens und seiner Mappings sind im Aktionsmenü eines Knotens verfügbar.
Fahren Sie über einen Knotennamen und klicken Sie auf das Aktionsmenü. Wählen Sie im Menü eine dieser Optionen zum Entfernen von Mappings:

| Menüelement | Beschreibung |
|---|---|
Schleifenknoten entfernen entfernt die Schleifenknotendefinition. Diese Aktion ist nur auf Knoten verfügbar, die einen manuell definierten Schleifenknoten haben. Um eine Schleifenknotendefinition auf einem automatisch generierten Schleifenknoten zu entfernen, entfernen Sie alle direkten Blatt-Mappings wie unter Zielknotenaktionen beschrieben. Hinweis Wenn Sie alle direkten Blatt-Mappings eines manuell definierten Schleifenknotens entfernen, bleibt die Schleifenknotendefinition bestehen. |
|
Schleifenknoten und Mappings entfernen entfernt die Schleifenknotendefinition aufgrund von Mappings, die direkte Blatt-Kinder sind, die dem Schleifenknoten zugeordnet sind, und entfernt diese Mappings. Alle anderen Mappings innerhalb untergeordneter Schleifenknoten unter dem übergeordneten Schleifenknoten bleiben erhalten, und der Knoten behält seine Schleifenknotendefinition, wenn mindestens ein Enkel-Element zugeordnet ist. Diese Aktion ist nur auf Knoten verfügbar, die einen definierten Schleifenknoten haben (entweder manuell oder durch automatische Generierung). |