Erstellen Sie dynamisch einen Transformation im Jitterbit Design Studio
Anwendungsfall
Ein häufiges Integrationsszenario ist, wenn die Quelldaten flach und das Ziel hierarchisch sind. Bei einer Eins-zu-eins-Zuordnung verwendet die Transformation als Generator die Anzahl der eingehenden Datensätze und der Eins-zu-viele-Knoten wird nicht korrekt gefüllt. Die Transformation muss angewiesen werden, mehrere Instanzen aus demselben Datensatz zu generieren. Dies kann durch die Verwendung von Transformation und den Funktionen erreicht werden SetInstances()
Und GetInstances()
.
Beispiele
CSV in Flatfile
Dieser Operation erstellt Testdaten, liest die Ausgabe, führt sie durch eine Transformation und schreibt sie in eine temporäre Datei. Mit dem Script „Ausgabe lesen“ können Sie die Datei anzeigen.
Während die Transformation das NetSuite WSDL verwendet, führt sie keine Upsert-Aktion aus und zum Ausführen des Operation ist kein NetSuite Endpoint (oder Anmeldeinformationen) erforderlich.
Die folgenden Beispieldaten enthalten primäre und Rechnungskontaktinformationen (Namen und Emails). Jede hat ihre eigenen Felder, aber das Ziel verwendet sich wiederholende Zeilen für Kontaktinformationen. Diese Screenshots zeigen das Durchlaufen der Datensätze:
Beachten Sie, dass das Ziel beim Testen des Operation über zwei contactRoles-Datensätze aus einer einzigen Quelle verfügt.
Ein dynamischer Iterator wird erstellt durch die Verwendung des SetInstances()
Und GetInstances()
Funktionen und Übergeben eines Werte-Arrays.
Es gibt mehrere Voraussetzungen:
- Dem Transformation werden Bedingungen (keine Scripts ) hinzugefügt, um SetInstances() und GetInstances() zu verwenden.
- Die Funktion SetInstance() muss sich innerhalb der Bedingung des unmittelbar übergeordneten Knotens eines untergeordneten Knotens befinden.
- Das untergeordnete Element muss eine Kardinalität von 0:viele oder 1:viele (E_*) haben.
Script für übergeordneten Knoten (contactRolesList)
primaryContactArray = Array(); // Instantiate the array. The array will be re-instantiated for each record
Set(primaryContactArray, Primary_Contact, -1); // Append the primary contact and primary email to array
Set(primaryContactArray, Primary_Email, -1);
billingContactArray = Array(); // Similar to the above
Set(billingContactArray,Bill_To_Name,-1);
Set(billingContactArray,Billing_Email,-1);
// Since the array contains two rows, the transformation generator will build two output children nodes
rolesArray = Array();
Set(rolesArray, primaryContactArray,-1);
Set(rolesArray, billingContactArray,-1);
SetInstances('contactRoles', rolesArray); // Must include the child node name.
// This stores the instance array to be used with GetInstances
/*
Example data at this point (Primary Contact, Billing Contact):
{{Judith Hall,sbishop0@pinterest.com},{Scott Bishop,sbishop0@mediafire.com,}}
Since the array contains two rows, the transformation generator will build two output nodes
*/
true // Since this is a condition, returned value must be true or else the record is skipped.
Script für untergeordnete Knotenbedingung (contactRoles)
// Assign a global variable to the contents of GetInstance
$instanceReference = GetInstance();
// As this is a condition node, it must return true or else the record is skipped.
true
Script für untergeordnetes Knotenfeld (Email)
// Simply get the array value. This will get the email column in the array records
$instanceReference[1]
Script für untergeordnetes Knotenfeld (Name)
// Simply get the array value. This will get the name column in the array records
$instanceReference[0]
Flachdatei zur Datenbank
Das zweite Beispiel ähnelt dem ersten, außer dass das Ziel jetzt eine Datenbank ist:
Dabei wird eine lokale PostgreSQL Datenbank verwendet. Die Tabellen werden gelöscht und im ersten Script neu erstellt, um die Bereitstellung zu vereinfachen. Die Transformation erstellt mehrere Zeilen für jede Zeile in den Quelldaten:
Die Scripts sind dem Textbeispiel (erstes Beispiel) sehr ähnlich. SetInstances() befindet sich im Zustand des übergeordneten Knotens und GetInstances() im Zustand des untergeordneten Knotens. Der übergeordnete Knoten muss den Namen des untergeordneten Knotens verwenden: SetInstances('ContactAddress', rolesArray)
Wenn wir die Tabelle in PostgreSQL anzeigen, sehen wir, dass die Tabelle „ContactAddress“ 400 Zeilen enthält: Die Quelle verfügt über 200 Zeilen und für jede Zeile werden 2 Einträge erstellt.