Teilen Sie eine Datei mit SCOPE_CHUNK im Jitterbit Integration Studio in einzelne Datensätze auf.
Einführung
Mit diesem Entwurfsmuster können die Daten in einer Datei mit mehreren Datensätzen in mehrere Dateien aufgeteilt werden, die jeweils einen einzelnen Datensatz enthalten. Dies geschieht mithilfe von SCOPE_CHUNK
Präfixsyntax der Set
Funktion.
Tipp
Dieses Muster wird empfohlen, wenn die Quelldaten flach (nicht hierarchisch) sind und die Operation keine Transformation enthält, die bedingtes Mapping verwendet. Für komplexe (hierarchische) Quelldaten siehe Aufteilen einer Datei in einzelne Datensätze mit SourceInstanceCount
.
Anwendungsfall
In diesem Szenario enthalten die Quelldaten mehrere Datensätze und der Geschäftsprozess oder Endpoint erfordert, dass die Datensätze einzeln verarbeitet werden.
Entwurfsmuster
Dieses Entwurfsmuster dient zum Lesen der Datei mithilfe einer Operation, bei der die Transformation dasselbe Quell- und Schema verwendet. Dieses Muster weist die folgenden Hauptmerkmale auf:
- Im ersten Feld der Transformation, die die Daten verarbeitet, wird das
Set
Funktion wird verwendet, um eine Variable festzulegen, die mit beginntSCOPE_CHUNK
, gefolgt von zusätzlichem Text, um den Variablennamen zu konstruieren. Das erste Argument erstellt den Ausgabedateinamen, normalerweise unter Verwendung einer Datensatzkennung aus den Quelldaten. Die Dateinamen müssen eindeutig sein, um ein Überschreiben zu vermeiden. Daher kann ein Datensatzzähler oder eine GUID als Teil des Dateinamens verwendet werden. - Ein Dateispeicherziel wie Temporärer Speicher oder Lokaler Speicher muss verwendet werden. (Mithilfe einer Variable wird nicht unterstützt.) Es wird empfohlen, einen Pfad anzugeben. Der Dateiname sollte mit dem globalen Variablennamen konfiguriert werden, der in der
Set
Funktion. - Die Operation muss mit der Option Chunking aktivieren konfiguriert sein, mit einer Chunk-Größe von
1
, Anzahl der Datensätze pro Datei von1
und Maximale Anzahl von Threads von1
. - Während der Laufzeit wird jeder Datensatz gelesen, ihm wird ein eindeutiger Dateiname zugewiesen und er wird einzeln in das Ziel geschrieben.
Nach der Verwendung dieses Musters besteht der nächste Schritt normalerweise darin, FileList
Funktion, um das Array von Dateinamen im Verzeichnis abzurufen (konfigurieren Sie die Read-Aktivität im Dateiverzeichnis mit der *
Platzhalter), durchläuft dann das Array und liest jede Datei für die nächste Operation in die Quelle ein.
Beispiele
Beispiele für die Verwendung des oben beschriebenen Entwurfsmusters werden für zwei verschiedene Arten von Quelldaten bereitgestellt: eine flache CSV-Datei und eine hierarchische JSON-Datei.
Flache CSV
Diese Beispiel Operation wendet das oben beschriebene Entwurfsmuster an, um flache CSV-Daten für jeden Datensatz in eine Datei aufzuteilen. Jede Nummer entspricht einer Beschreibung des folgenden Operation Schritt. Weitere Einzelheiten finden Sie in den Screenshots für Hierarchisches JSON Beispiel.
-
Das Script weist die Quelldaten einer globalen Variable namens
io
(Eingabe/Ausgabe). (Zu Demonstrationszwecken wird ein Script verwendet; die Quelldaten könnten auch von einem konfigurierten Endpoint stammen.) -
Die
io
globale Variable wird verwendet, um eine Variable zu konfigurieren Endpoint und eine zugehörige Variable-Read-Aktivität werden von der Operation als Quelle der Transformation verwendet. -
Innerhalb der Transformation verwenden Quelle und Ziele dasselbe Schema und alle Felder werden zugeordnet. Das erste Datenfeld im Script der Transformation ist so konfiguriert, dass es
SCOPE_CHUNK
. DerSet
Funktion wird verwendet, um eine Variable zu erstellen, die mit der Phrase beginntSCOPE_CHUNK
und wird mit der eindeutigen Datensatz-ID aus der Quelle sowie einem Datensatzzähler und einem Suffix von verknüpft.csv
: -
Das Ziel ist ein Temporärer Speicher Schreib-Aktivität, konfiguriert mit einem Standardpfad und der zuvor definierten globalen Variable „Dateiname“.
-
Die Scripts dienen zum Protokollieren der Ausgabe und sind optional. Das erste Script ruft eine Liste der Dateien aus dem Verzeichnis ab, durchläuft die Liste und protokolliert den Dateinamen und die Größe. Anschließend übergibt es den Dateinamen an eine Operation mit einem anderen Script, das den Dateiinhalt protokolliert. (Siehe Screenshots zum Hierarchischen JSON Beispiel oben.)
-
Die Operation muss mit der Option Chunking aktivieren konfiguriert sein, mit einer Chunk-Größe von
1
, Anzahl der Datensätze pro Datei von1
und Maximale Anzahl von Threads von1
.
Das Ausführen des Operation führt zu einzelnen CSV-Datensätzen, die in der Protokollausgabe angezeigt werden:
Hierarchisches JSON
Diese Beispiel Operation wendet das oben beschriebene Entwurfsmuster an, um hierarchische JSON-Daten für jeden Datensatz in eine Datei aufzuteilen. Jede Nummer entspricht einer Beschreibung des folgenden Operation Schritt.
Hinweis
Dieses Entwurfsmuster ist nicht mehr die empfohlene Methode zum Aufteilen hierarchischer JSON-Daten. Die empfohlene Methode finden Sie unter Aufteilen einer Datei in einzelne Datensätze mithilfe von SourceInstanceCount
.
-
Das Script weist die Quelldaten einer globalen Variable namens
io
(Eingabe/Ausgabe). (Zu Demonstrationszwecken wird ein Script verwendet; die Quelldaten könnten auch von einem konfigurierten Endpoint stammen.) -
Die
io
globale Variable wird verwendet, um eine Variable zu konfigurieren Endpoint und eine zugehörige Variable-Read-Aktivität werden von der Operation als Quelle der Transformation verwendet: -
Innerhalb der Transformation verwenden Quelle und Ziel dasselbe Schema und alle Felder werden zugeordnet:
Die Spitze
item
Knoten hat eine Bedingung, um die Datensatzanzahl zu generieren. Das erste Datenfeld in der Transformation ist so konfiguriert, dass esSCOPE_CHUNK
. DerSet
Funktion wird verwendet, um eine Variable zu erstellen, die mit der Phrase beginntSCOPE_CHUNK
und wird mit der eindeutigen Datensatz-ID aus der Quelle sowie einem Datensatzzähler und einem Suffix von verknüpft.json
: -
Das Ziel ist ein Temporärer Speicher Schreib-Aktivität mit einem Standardpfad und der zuvor definierten globalen Dateinamenvariable konfiguriert:
-
Die Scripts dienen zum Protokollieren der Ausgabe und sind optional. Das erste Script ruft eine Liste der Dateien aus dem Verzeichnis ab, durchläuft die Liste und protokolliert den Dateinamen und die Größe. Anschließend übergibt es den Dateinamen an eine Operation mit einem anderen Script, das den Dateiinhalt protokolliert:
log_file_list_json<trans> arr = Array(); arr = FileList("<TAG>activity:tempstorage/json_splitter/tempstorage_read/Read</TAG>"); cnt = Length(arr); i = 0; While(i < cnt, filename = arr[i]; file = ReadFile("<TAG>activity:tempstorage/json_splitter/tempstorage_read/Read</TAG>",filename); WriteToOperationLog("file: " + filename + " has a length of: " + Length(file)); $gv_file_filter = filename; RunOperation("<TAG>operation:log_each_file_json</TAG>"); i++ ); </trans>
log_each_file_json<trans> WriteToOperationLog(ReadFile("<TAG>activity:tempstorage/json_splitter/tempstorage_read/Read</TAG>",$gv_file_filter)); </trans>
-
Die Operation muss mit der Option Chunking aktivieren konfiguriert sein, mit einer Chunk-Größe von
1
, Anzahl der Datensätze pro Datei von1
und Maximale Anzahl von Threads von1
:
Das Ausführen des Operation führt zu einzelnen JSON-Datensätzen, die in der Protokollausgabe angezeigt werden: