Schleifenknoten in Transformations im Jitterbit Integration Studio
Einführung {: #introduction }Schleifenknoten Iteratorzeilen, die die Quell- und Zielknoten angeben, deren zugeordnete Felder eine Transformation durchlaufen wird, werden während des Mapping-Prozesses automatisch generiert, entweder bei Verwendung von automapping oder beim manuellen Zuordnen 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 sich wiederholender Datenwerte - oder mehrere Schleifenknoten - enthalten, müssen Sie möglicherweise einen Schleifenknoten manuell definieren, um die Datenschleife auf einem anderen Knoten zu erzwingen.
In bestimmten Situationen kann ein zugeordnetes Quellfeld eine Iteratorzeile darüber aufweisen, die so konfiguriert ist, dass neue Datensätze auf einer Ebene des Ziels aus einer niedrigeren Ebene 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 die [Zuordnung möglicherweise manuell anpassen](#mismatched.
Bei Bedarf können Sie auch Schleifenknoten entfernen, sowohl automatisch generierte als auch manuell definierte.
Definieren von Schleifenknoten
Bei Verwendung von Automapping werden Schleifenknoten automatisch generiert.
Schleifenknoten können auch manuell auf Zielknoten definiert werden, die beide folgenden Bedingungen erfüllen:
- Die Kardinalität des Zielknotens muss
0+
oder1+
. - Es dürfen keine Zuordnungen zu direkten Blattfeldern innerhalb des Zielknotens vorhanden sein.
Darüber hinaus muss die Kardinalität des Quellknotens, der zur Erstellung des Zielschleifenknotens verwendet wird, 0+
oder 1+
.
Um einen Schleifenknoten manuell zu definieren, verwenden Sie im Mapping-Modus, ziehen Sie einen geeigneten Quellknoten auf einen geeigneten 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 Iteratorzeile wird angezeigt. Sie gibt an, wie die Transformation den Quelldatensatz durchläuft. (Die Zeile wird auch dann angezeigt, wenn noch keine direkten Blattzuordnungen für Felder unter dem Knoten vorhanden sind.) Führen Sie die Zuordnung der Felder unter dem Schleifenknoten wie gewohnt durch:
Ausgeklappte Knoten mit Schleifenknotenzuordnungen werden mit einer gepunkteten Iteratorlinie angezeigt. Klicken Sie auf das Dreiecksymbol. Um untergeordnete Knoten zu erweitern, bis Sie den Schleifenknoten finden:
Automatisch generierte Schleifenknoten manuell anpassen
Nachdem Schleifenknoten automatisch generiert wurden, müssen Sie diese möglicherweise manuell anpassen. Im folgenden Beispiel stellt eine Transformation Filter für die Verwendung in einer HubSpot Suchaktivität bereit, um Unternehmensdatensätze Abfrage. Nachfolgend zeigen wir zunächst die Ausgabe bei Verwendung der automatisch generierten Schleifenknoten und zeigen Sie dann, wie sich die Ausgabe ändert, wenn der Schleifenknoten manuell neu definiert.
Automatische Schleifenknotengenerierung
Nach dem Automapping und der automatischen Generierung eines Schleifenknotens zeigt das Transformation eine Datenschleife auf dem zweiten Knoten des Ziels. item
Knoten:
Wenn das obige Mapping mit den unten stehenden Eingabedaten verarbeitet wird, ergibt sich folgende Ausgabe, die die Eingabestruktur in eine einzelne Filterliste reduziert:
{
"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 Schleifenknotendefinition
Um den Knoten zu ändern, auf dem die Daten in einer Schleife laufen, ziehen Sie den zweiten Knoten der Quelle item
Knoten auf den ersten des Ziels item
Knoten und wählen Sie Schleifenknoten definieren:
Wir sehen nun die Iteratorzeile des Schleifenknotens sowohl auf der ersten als auch auf der zweiten Seite des Ziels. item
Knoten:
Wenn das obige Mapping mit denselben Eingabedaten wie bei der automatischen Schleifenknotengenerierung verarbeitet wird, 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"
}
]
}
]
}
Manuelles Anpassen einer Zuordnung in nicht übereinstimmenden Quell- und Zielschleifenknoten
Über einem zugeordneten Quellfeld kann sich eine Iteratorzeile befinden, die so konfiguriert ist, dass neue Datensätze auf einer Zielebene aus einer niedrigeren Quellebene generiert werden (auch durch ein Informationssymbol gekennzeichnet). neben dem Quellknoten). Diese Mapping-Konfiguration ist gültig, führt aber möglicherweise nicht zu den gewünschten Daten im Ziel.
Sie sollten das Mapping manuell anpassen, wenn einer der folgenden Punkte 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 der Zieldatei auslassen (aufgrund eines fehlenden untergeordneten Datensatzes).
- Sie haben Quelldaten, bei denen der gewünschte untergeordnete Datensatz in einem konstanten Index steht oder über einen Suchwert im Array des untergeordneten Datensatzes gefunden werden kann.
- Sie benötigen keine Werte aus anderen untergeordneten Datensätzen im Array des untergeordneten Datensatzes.
Die folgenden Unterabschnitte beschreiben einen Anwendungsfall, in dem Mapping-Anpassungen erforderlich sind, um Werte aus den Quelldatensätzen in der Zieldatei beizubehalten. Diese Animation bietet einen Überblick über die unten beschriebenen Schritte:
In diesem Szenario weisen Quell- und Zielschemata folgende Eigenschaften auf:
Quelle | Ziel |
---|---|
|
|
Automatische Schleifenknotengenerierung
Wenn wir mit der Zuordnung von Feldern beginnen (z. B. Name
) vom Quellknoten der obersten Ebene zum Zielknoten der obersten Ebene wird automatisch eine Iteratorlinie vom Kunden-/Artikel-Arrayknoten der obersten Ebene der Quelle zum Kunden-/Flach-Arrayknoten des Ziels generiert. Dies bedeutet, dass für jeden neuen Kundendatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:
Wenn wir das erste Feld im Knoten der wiederkehrenden Quelladresse zuordnen (Street
) in das entsprechende Zieladressfeld (street
) wird eine Meldung angezeigt, die darauf hinweist, dass neue Zieldatensätze aus einer niedrigeren Ebene der Quelle generiert werden:
Wenn Sie auf Bestätigen klicken, wird das Quellende der Schleifen-Iteratorzeile automatisch vom obersten Kunden-/Artikel-Array-Knoten zum verschachtelten Adressen-/Artikel-Array-Knoten verschoben (ebenfalls durch ein Informationssymbol gekennzeichnet). neben dem Quellknoten).
Für dieses Beispielszenario bedeutet dies, dass für jeden neuen Adressdatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:
Dadurch wird in der Zieldatei für jede Adresse im Quelladress-Array des jeweiligen Kunden ein einziger Quellkundendatensatz angezeigt. Jeder Kundendatensatz enthält dieselben Top-Level-Feldwerte mit eindeutigen Werten in den Adressfeldern. Enthält beispielsweise der erste Quellkundendatensatz zwei Adressen, enthält die Zieldatei zwei Kundendatensätze: einen mit der ersten und einen mit der zweiten Adresse.
Wichtig
Bei der automatischen Schleifenknotengenerierung in diesem Szenario wird aus einem Quellkundendatensatz ohne Adressen kein Zielkundendatensatz generiert.
Mapping von einer Quelle mit mehreren Instanzen zu einem Ziel mit einer einzigen Instanz
Wenn der generierte Zielschleifenknoten von mehr als einem Quellschleifenknoten abhängt, müssen Sie möglicherweise eine Abweichung der Vorkommen im Mapping beheben.
Wenn die Quelldatenstruktur ein Array mit mehreren Objekten ist und einer Zieldatenstruktur mit einem einzelnen Objekt zugeordnet wird, wird folgender Dialog angezeigt:
Um die erste Instanz der Quelle im Mapping zu verwenden, wählen Sie Ja, um automatisch ein Raute-Symbol einzufügen. (#
)im Referenzpfad des Datenelements. Dies bedeutet, dass nur der erste Datensatz zugeordnet wird. Ein vollständiges Beispiel finden Sie unter Datenstrukturen.
Wenn Sie nicht möchten, dass die erste Instanz der Quelle verwendet wird, können Sie Instanzen manuell angeben (siehe unten) oder andere Logik, die instanzauflösende Funktionen verwendet (siehe Instanzfunktionen).
Manuelle Mapping-Anpassung
Im Beispielszenario möchten wir keine Kundendatensätze aufgrund fehlender Adressen verlieren. Daher müssen wir jedes Mapping auf Feldebene des untergeordneten Arrays manuell anpassen. Bei jeder Anpassung des Mappings wird die generierte Iteratorzeile des Schleifenknotens automatisch an die richtige Stelle für die gewünschte Zielausgabe verschoben (basierend auf der Mapping-Anpassung).
Um das Mapping für jedes Zielfeld im untergeordneten Array anzupassen (z. B. street
), fügen wir dem Array addresses/item im Mapping Script ein Hash-Symbol gefolgt von einer Ganzzahl hinzu. Das Hinzufügen des #1
Die Referenz gibt das erste Element eines Arrays zurück. Dadurch wird für jeden Kundendatensatz in der Quelle ein einzelner Kundendatensatz im Ziel erstellt. Mit dieser Konfiguration enthält jeder im Ziel erstellte Kundendatensatz nur die erste Adresse aus dem Adress-Array des Quellkundendatensatzes. Die übrigen Adressen werden nicht in das Ziel verschoben.
Tipp
Dieses Beispiel verwendet die in Referenzpfadnotation beschriebene Hash-Syntax..
Um das zweite oder nachfolgende Element des Arrays zurückzugeben, geben Sie Folgendes an: #2
, #3
, und so weiter. Die FindValue
Funktion kann auch verwendet werden, um ein Array nach einem Wert zu durchsuchen und das zugehörige Feld zurückzugeben. Beispielsweise kann das Mapping Script für das Ziel country
Feld könnte auf einem Type
von Billing
:
<trans>
FindValue("Billing", json$item.Addresses$item#.Type$, json$item.Addresses$item#.Country$)
</trans>
Beachten Sie, dass bei der Verwendung von Instanzfunktionen, das Raute-Symbol wird automatisch eingefügt, sofern erforderlich.
Nach dem Hinzufügen der Artikelreferenz (#1
) in das Script ein, kehrt die Iteratorzeile des Schleifenknotens automatisch zum obersten Kunden-/Artikel-Arrayknoten der Quelle zurück. Dies zeigt, dass für jeden neuen Kundendatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:
Wenn wir zusätzliche Felder im untergeordneten Array zuordnen, kehrt die Iteratorzeile des Schleifenknotens zur ursprünglichen Position zurück. Der Vorgang des Hinzufügens der Elementreferenz (#1
) muss wie oben beschrieben für jede Feldebenenzuordnung im Array wiederholt werden.
Entfernen eines Schleifenknotens und von Zuordnungen
Optionen zum Entfernen eines manuell definierten Schleifenknotens oder zum Entfernen eines beliebigen Schleifenknotens und seiner Zuordnungen sind im Aktionsmenü eines Knotens verfügbar.
Entweder aus dem Mapping-Modus oder Script, bewegen Sie den Mauszeiger über einen Knotennamen und klicken Sie auf das Aktionsmenü , um das Aktionsmenü zu öffnen. Wählen Sie im Menü eine der folgenden Optionen zum Entfernen der Zuordnung aus:
Menüpunkt | Beschreibung |
---|---|
![]() | Schleifenknoten entfernen entfernt die Schleifenknotendefinition. Diese Aktion ist nur für Knoten verfügbar, die einen manuell definierten Schleifenknoten haben. Um eine Schleifenknotendefinition auf einem automatisch generierten Schleifenknoten zu entfernen, entfernen Sie alle seine direkten Blattzuordnungen, wie unter Zielknoten beschrieben. im Mapping-Modus. Hinweis Wenn Sie alle direkten Blattzuordnungen eines manuell definierten Schleifenknotens entfernen, bleibt die Schleifenknotendefinition bestehen. |
![]() | Loop-Knoten und Zuordnungen entfernen entfernt die Loop-Knotendefinition aufgrund von Zuordnungen, die direkte untergeordnete Blattknoten sind, die mit dem Schleifenknoten verknüpft sind, und entfernt diese Zuordnungen. Alle anderen Zuordnungen innerhalb untergeordneter Schleifenknoten unterhalb des übergeordneten Schleifenknotens bleiben erhalten, und der Knoten behält seine Schleifenknotendefinition bei, wenn mindestens ein untergeordneter Knoten zugeordnet ist. Diese Aktion ist nur für Knoten verfügbar, für die ein Schleifenknoten definiert ist (entweder manuell oder durch automatische Generierung). |