Eine Datei in einzelne Datensätze mit SourceInstanceCount in Jitterbit Studio aufteilen
Einführung
Dieses Designmuster kann verwendet werden, um einen kleinen Satz von Quelldaten in einer Multi-Record-JSON- oder XML-Datei in mehrere Dateien aufzuteilen, die jeweils einen einzelnen Datensatz enthalten, indem die Funktion SourceInstanceCount verwendet wird.
Tipp
Dieses Muster wird empfohlen, nur mit einem kleinen Satz von Quelldatensätzen zu verwenden, wenn die Quelldaten komplex (hierarchisch) sind. Für flache (nicht-hierarchische) Quelldaten siehe Eine Datei in einzelne Datensätze mit SCOPE_CHUNK aufteilen. Dieses Muster wird nicht für große Datenmengen empfohlen, da die Nutzlast für jeden Quelldatensatz wiederholt verarbeitet werden muss.
Anwendungsfall
In diesem Szenario sind die Quelldaten eine komplexe JSON-Datei, die eine kleine Anzahl mehrerer Datensätze enthält, und der Zielendpunkt erfordert, dass Datensätze einzeln verarbeitet werden.
Designmuster und Beispiel
Diese Beispiel-Operationskette wird verwendet, um das Designmuster zu veranschaulichen, dessen Hauptmerkmale nachfolgend beschrieben werden:

-
Die Operation Get File with Multiple Records ruft die Multi-Record-JSON-Datei aus der Quelle ab und schreibt den Inhalt in eine Variable (mit dem Namen
gv_multiple_records). -
Bei erfolgreichem Abschluss dieser Operation führt die Operation Control ein Controller-Skript aus, dessen Teile nachfolgend beschrieben werden:
<trans> ordercount = CountSubString($gv_multiple_records, '"assigned_location":'); $gv_record_no=1; While($gv_record_no<=ordercount, RunOperation("<TAG>operation:Split into Single-record Files</TAG>"); $gv_record_no++; ) </trans>-
Die Funktion
CountSubStringwird verwendet, um die Anzahl der Datensätze aus der Quelle zu zählen (ersetzen Sieassigned_locationdurch ein beliebiges Feld, das nur einmal für jeden Datensatz in den Quelldaten vorkommt). -
Eine globale Variable (
gv_record_no) wird mit1initialisiert und wird verwendet, um die Anzahl der Datensätze zu erhöhen. -
Die Funktion
Whilewird verwendet, um die Datensatzanzahl zu durchlaufen und die nächste Operation für jeden Datensatz auszuführen. -
RunOperationwird einmal pro Datensatz aufgerufen und unterliegt einem Limit auf Agent-Ebene für synchrone Aufrufe, die innerhalb einer einzelnenWhile-Schleife getätigt werden (50standardmäßig). Dies ist ein weiterer Grund, warum dieses Muster nur für einen kleinen Satz von Datensätzen empfohlen wird; siehe die Notiz unterRunOperationfür Details.
-
-
Während das Skript die Datensätze durchläuft, wird die Operation Split into Single-record Files wiederholt ausgeführt. Dies sind die Schritte der Operation:
- Der Inhalt der Multi-Record-JSON-Datei in
gv_multiple_recordswird als Quelle für die Transformation verwendet. -
In der Transformation wird ein Bedingungsskript auf dem Item-Knoten definiert, um jeden Datensatz zu durchlaufen:
If(SourceInstanceCount() == $gv_record_no, true, false)
-
Bei jeder Operationsausführung gibt die Transformation einen einzelnen JSON-Datensatz aus, der in das gewünschte Ziel geschrieben werden kann.
- Der Inhalt der Multi-Record-JSON-Datei in
Nach dem Aufteilen und Verarbeiten einzelner Datensätze ist ein häufiger nächster Schritt das Senden einer Zusammenfassungs-E-Mail oder eines Protokolls verarbeiteter Datensätze. Siehe Ein Zusammenfassungsprotokoll nach der Verarbeitung von Datensätzen generieren. Überlegungen zum gleichzeitigen Ausführen von Pro-Datensatz-Operationen finden Sie unter Asynchrone Operationen verwalten.