Eine Datei in einzelne Datensätze aufteilen mit SourceInstanceCount im Jitterbit Integration Studio
Einführung
Dieses Entwurfsmuster kann verwendet werden, um eine kleine Menge von Quelldaten in einer Multi-Datensatz-JSON- oder XML-Datei in mehrere Dateien aufzuteilen, wobei jede Datei einen einzelnen Datensatz enthält, unter Verwendung der SourceInstanceCount
Funktion.
Hinweis
Dieses Muster wird empfohlen, nur mit einer kleinen Menge von Quelldatensätzen verwendet zu werden, wenn die Quelldaten komplex (hierarchisch) sind. Für flache (nicht-hierarchische) Quelldaten siehe Eine Datei in einzelne Datensätze aufteilen mit SCOPE_CHUNK. 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 von mehreren Datensätzen enthält, und der Zielendpunkt erfordert, dass die Datensätze einzeln verarbeitet werden.
Entwurfsmuster und Beispiel
Diese Beispiel Operationenkette wird verwendet, um das Entwurfsmuster zu veranschaulichen, dessen Hauptmerkmale unten beschrieben sind:
-
Die Operation Datei mit mehreren Datensätzen abrufen ruft die Multi-Datensatz-JSON-Datei aus der Quelle ab und schreibt den Inhalt in eine Variable (genannt
Variable
). -
Bei Erfolg dieser Operation führt die Operation Steuerung ein Steuerungsskript aus, dessen Teile unten beschrieben sind:
<trans> ordercount = CountSubString($Variable, '"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
CountSubString
Funktion wird verwendet, um die Anzahl der Datensätze aus der Quelle zu zählen (ersetzen Sieassigned_location
durch ein beliebiges Feld, das in den Quelldaten nur einmal für jeden Datensatz erscheint). -
Eine globale Variable (
gv_record_no
) wird auf1
initialisiert und wird verwendet, um die Anzahl der Datensätze zu erhöhen. -
Die
While
Funktion wird verwendet, um durch die Datensatzanzahl zu iterieren und die nächste Operation für jeden Datensatz auszuführen.
-
-
Während das Skript durch die Datensätze läuft, wird die Operation In Einzel-Datensatzdateien aufteilen wiederholt ausgeführt. Dies sind die Schritte der Operation:
- Der Inhalt der Multi-Datensatz-JSON-Datei, die in
Variable
enthalten ist, wird als Quelle für die Transformation verwendet. -
In der Transformation wird ein Bedingungsskript auf dem Elementknoten definiert, um durch jeden Datensatz zu iterieren:
If(SourceInstanceCount() == $gv_record_no, true, false)
-
Bei jedem Ausführen der Operation gibt die Transformation einen einzelnen JSON-Datensatz aus, der in das gewünschte Ziel geschrieben werden kann.
- Der Inhalt der Multi-Datensatz-JSON-Datei, die in