Zum Inhalt springen

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 beginnt SCOPE_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 von 1 und Maximale Anzahl von Threads von 1.
  • 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.

Operation CSV-Splitter kommentiert

  1. 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.)

    Quelldaten CSV laden

  2. 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.

  3. 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. Der Set Funktion wird verwendet, um eine Variable zu erstellen, die mit der Phrase beginnt SCOPE_CHUNK und wird mit der eindeutigen Datensatz-ID aus der Quelle sowie einem Datensatzzähler und einem Suffix von verknüpft .csv:

    bom

  4. Das Ziel ist ein Temporärer Speicher Schreib-Aktivität, konfiguriert mit einem Standardpfad und der zuvor definierten globalen Variable „Dateiname“.

  5. 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.)

  6. Die Operation muss mit der Option Chunking aktivieren konfiguriert sein, mit einer Chunk-Größe von 1, Anzahl der Datensätze pro Datei von 1 und Maximale Anzahl von Threads von 1.

Das Ausführen des Operation führt zu einzelnen CSV-Datensätzen, die in der Protokollausgabe angezeigt werden:

Protokoll-CSV-Splitter

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.

Operation JSON-Splitter kommentiert

  1. 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.)

    Quelldaten JSON laden

  2. 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:

    Variable lesen

  3. Innerhalb der Transformation verwenden Quelle und Ziel dasselbe Schema und alle Felder werden zugeordnet:

    JSON-Splitter

    Die Spitze item Knoten hat eine Bedingung, um die Datensatzanzahl zu generieren. Das erste Datenfeld in der Transformation ist so konfiguriert, dass es SCOPE_CHUNK. Der Set Funktion wird verwendet, um eine Variable zu erstellen, die mit der Phrase beginnt SCOPE_CHUNK und wird mit der eindeutigen Datensatz-ID aus der Quelle sowie einem Datensatzzähler und einem Suffix von verknüpft .json:

    JSON-Splitter

  4. Das Ziel ist ein Temporärer Speicher Schreib-Aktivität mit einem Standardpfad und der zuvor definierten globalen Dateinamenvariable konfiguriert:

    Temporärer Speicher-Schreibsplitter

  5. 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>
    
  6. Die Operation muss mit der Option Chunking aktivieren konfiguriert sein, mit einer Chunk-Größe von 1, Anzahl der Datensätze pro Datei von 1 und Maximale Anzahl von Threads von 1:

    Optionen JSON-Splitter

Das Ausführen des Operation führt zu einzelnen JSON-Datensätzen, die in der Protokollausgabe angezeigt werden:

protokolliert JSON-Splitter