Schleifenknoten in Transformations im Jitterbit Integration Studio
Einführung
Loop-Knoten Iteratorzeilen, die die Quell- und Zielknoten angeben, deren zugeordnete Felder eine Transformation durchlaufen wird, werden während des Zuordnungsprozesses 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 so beschaffen sind, dass es mehrere Sätze sich wiederholender Datenwerte - oder mehrere Schleifenknoten - gibt, müssen Sie möglicherweise einen Schleifenknoten manuell definieren, um die Daten zu zwingen, auf einem anderen Knoten zu schleifen.
In bestimmten Situationen kann ein zugeordnetes Quellfeld eine Iteratorzeile darüber haben, die so konfiguriert ist, dass neue Datensätze auf einer Ebene des Ziels von einer niedrigeren Ebene der Quelle aus generiert werden. Diese Zuordnungskonfiguration ist gültig, führt jedoch 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 bei Bedarf auch Loop-Knoten entfernen, sowohl automatisch generierte als auch manuell definierte.
Definieren von Schleifenknoten
Bei Verwendung von Automapping, werden Loop-Knoten automatisch generiert.
Loop-Knoten können auch manuell auf Zielknoten definiert werden, die beide dieser 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 zum Erstellen des Zielschleifenknotens verwendet wird, 0+
oder 1+
.
Um einen Loop-Knoten manuell zu definieren, im Mapping-Modus, ziehen Sie einen qualifizierten Quellknoten zu einem qualifizierten Zielknoten:
Beim Ablegen des Quellknotens auf dem Zielknoten wird ein Menü angezeigt. Wählen Sie die Option Loop-Knoten 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.) Vervollständigen Sie die Zuordnung der Felder unter dem Schleifenknoten wie üblich:
Zusammengeklappte Knoten, die Schleifenknotenzuordnungen enthalten, werden mit einer gepunkteten Iteratorlinie angezeigt. Klicken Sie auf das Dreiecksymbol um untergeordnete Knoten zu erweitern, bis Sie den Schleifenknoten finden:
Automatisch generierte Loop-Knoten manuell anpassen
Nachdem Loop-Knoten automatisch generiert wurden, müssen Sie sie möglicherweise manuell anpassen. Im folgenden Beispiel bietet eine Transformation Filter zur Verwendung in einer HubSpot Suchaktivität, 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 Loop-Knoten-Generierung
Nach dem automatischen Mapping und der automatischen Generierung eines Loop-Knotens zeigt das Transformation eine Datenschleife auf dem zweiten item
Knoten:
Wenn die obige Zuordnung mit den folgenden Eingabedaten verarbeitet wird, ergibt sich diese Ausgabe, die die Eingabestruktur in eine einzelne Filterliste verflacht:
{
"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 Loop-Knotendefinition
Um den Knoten zu ändern, auf dem die Daten schleifen, ziehen Sie den zweiten Knoten der Quelle item
Knoten auf den ersten item
Knoten und wähle Loop-Knoten definieren:
Wir sehen jetzt die Schleifenknoten-Iteratorzeile sowohl auf der ersten als auch auf der zweiten item
Knoten:
Wenn die obige Zuordnung mit denselben Eingabedaten verarbeitet wird, die bei der automatischen Schleifenknotengenerierung 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"
}
]
}
]
}
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 Ebene des Ziels aus einer niedrigeren Ebene der Quelle generiert werden (auch mit einem Informationssymbol gekennzeichnet) neben dem Quellknoten). Diese Zuordnungskonfiguration ist gültig, führt aber möglicherweise nicht zu den gewünschten Daten im Ziel.
Sie möchten die Zuordnung möglicherweise 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 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 Nachschlagewert im untergeordneten Datensatzarray gefunden werden kann.
- Sie benötigen keine Werte aus anderen untergeordneten Datensätzen im untergeordneten Datensatzarray.
Die folgenden Unterabschnitte führen durch einen Anwendungsfall, bei dem Zuordnungsanpassungen 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 haben die Quell- und Zielschemata diese Eigenschaften:
Quelle | Ziel |
---|---|
|
|
Automatische Loop-Knoten-Generierung
Wenn wir mit der Zuordnung von Feldern beginnen (wie z. B. Name
) vom Quellknoten der obersten Ebene zum Zielknoten der obersten Ebene wird automatisch eine Schleifenknoten-Iteratorlinie vom Quellknoten des Kunden-/Artikelarrays der obersten Ebene zum Zielknoten des Kunden-/Flacharrays generiert. Dies gibt an, dass für jeden neuen Kundendatensatz in der Quelle ein neuer Kundendatensatz im Ziel generiert wird:
Wenn wir das erste Feld im sich wiederholenden Quelladressenknoten zuordnen (Street
) in das entsprechende Zieladressfeld (street
), wird eine Meldung angezeigt, die darauf hinweist, dass neue Zieldatensätze aus einer niedrigeren Ebene in der Quelle generiert werden:
Wenn Sie auf Bestätigen klicken, wird das Quellende der Schleifeniteratorzeile automatisch vom obersten Kunden-/Artikelarrayknoten nach unten zum verschachtelten Adressen-/Artikelarrayknoten verschoben (auch mit einem 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:
Dies führt dazu, dass in der Zieldatei für jede Adresse im Quelladressarray für diesen Kunden ein einziger Quellkundendatensatz einmal erscheint. Jeder Kundendatensatz hat dieselben Feldwerte der obersten Ebene mit eindeutigen Werten in den Adressfeldern. Wenn beispielsweise der erste Quellkundendatensatz zwei Adressen enthält, enthält das Ziel zwei Kundendatensätze: einen mit der ersten Adresse und einen mit der zweiten Adresse.
Wichtig
Mit der automatischen Loop-Node-Generierung in diesem Szenario wird aus einem Quellkundendatensatz ohne Adressen kein Zielkundendatensatz generiert.
Manuelle Mapping-Anpassung
Anhand des Beispielszenarios 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-Iteratorzeile 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 anzupassen (z. B. street
), fügen wir dem Array addresses/item im Mapping Script ein Hash-Symbol gefolgt von einer Ganzzahl hinzu. Durch das Hinzufügen des #1
Referenz 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 Adressarray 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 Elemente des Arrays zurückzugeben, geben Sie 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 basieren 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 Schleifenknoten-Iteratorzeile automatisch zum Kunden-/Artikelarrayknoten der obersten Ebene 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 an die ursprüngliche Position zurück. Der Vorgang des Hinzufügens der Elementreferenz (#1
) muss wie oben für jede Feldebenenzuordnung im Array wiederholt werden.
Entfernen eines Loop-Knotens und von Zuordnungen
Optionen zum Entfernen eines manuell definierten Loop-Knotens oder zum Entfernen eines beliebigen Loop-Knotens und seiner Zuordnungen sind im Aktionsmenü eines Knotens verfügbar.
Vom 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 dieser Optionen zum Entfernen der Zuordnung aus:
Menüelement | Beschreibung |
---|---|
Loop-Knoten entfernen entfernt die Loop-Knotendefinition. Diese Aktion ist nur für Knoten verfügbar, die einen manuell definierten Loop-Knoten haben. Um eine Loop-Knotendefinition für einen automatisch generierten Loop-Knoten zu entfernen, entfernen Sie alle seine direkten Blattzuordnungen wie unter Zielknoten beschrieben im Mapping-Modus. Hinweis Wenn Sie alle direkten Blattzuordnungen eines manuell definierten Loop-Knotens entfernen, bleibt die Loop-Knotendefinition bestehen. | |
Loop-Knoten und Zuordnungen entfernen entfernt die Loop-Knotendefinition aufgrund von Zuordnungen, die direkte untergeordnete Blattknoten sind, die mit dem Loop-Knoten verknüpft sind, und entfernt diese Zuordnungen. Alle anderen Zuordnungen innerhalb untergeordneter Loop-Knoten unterhalb des übergeordneten Loop-Knotens bleiben erhalten, und der Knoten behält seine Loop-Knotendefinition, wenn mindestens ein untergeordneter Knoten zugeordnet ist. Diese Aktion ist nur für Knoten verfügbar, für die ein Loop-Knoten definiert ist (entweder manuell oder durch automatische Generierung). |