Saltar al contenido

Dividir un archivo en registros individuales usando SourceInstanceCount en Jitterbit Studio

Introducción

Este patrón de diseño se puede usar para dividir un pequeño conjunto de datos de origen en un archivo JSON o XML con múltiples registros en varios archivos, cada uno conteniendo un único registro, usando la función SourceInstanceCount.

Consejo

Se recomienda usar este patrón solo con un pequeño conjunto de registros de origen cuando los datos de origen son complejos (jerárquicos). Para datos de origen planos (no jerárquicos), consulta Dividir un archivo en registros individuales usando SCOPE_CHUNK. No se recomienda este patrón para grandes conjuntos de datos porque la carga útil debe procesarse repetidamente para cada registro de origen.

Caso de uso

En este escenario, los datos de origen son un archivo JSON complejo que contiene un pequeño número de múltiples registros, y el endpoint de destino requiere que los registros se procesen individualmente.

Patrón de diseño y ejemplo

Esta cadena de operaciones de ejemplo se usa para ilustrar el patrón de diseño, cuyas características clave se describen a continuación:

operation chain sourceinstancecount

  1. La operación Get File with Multiple Records recupera el archivo JSON con múltiples registros del origen y escribe el contenido en una variable (denominada gv_multiple_records).

  2. Si esa operación es exitosa, la operación Control ejecuta un script de controlador, cuyas partes se describen a continuación:

    <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>
    
    • La función CountSubString se usa para contar el número de registros del origen (reemplazando assigned_location con cualquier campo que aparezca solo una vez para cada registro en los datos de origen).

    • Se inicializa una variable global (gv_record_no) en 1 y se usará para incrementar el número de registros.

    • La función While se usa para recorrer el conteo de registros y ejecutar la siguiente operación para cada registro.

    • RunOperation se llama una vez por registro y está sujeta a un límite a nivel de agente en las llamadas síncronas realizadas dentro de un único bucle While (50 por defecto). Esta es una razón adicional por la que se recomienda este patrón solo para un pequeño conjunto de registros; consulta la nota bajo RunOperation para obtener más detalles.

  3. A medida que el script recorre los registros, la operación Split into Single-record Files se ejecuta repetidamente. Estos son los pasos de la operación:

    1. El contenido del archivo JSON con múltiples registros contenido en gv_multiple_records se usa como origen para la transformación.
    2. En la transformación, se define un script de condición en el nodo de elemento para iterar a través de cada registro:

      If(SourceInstanceCount() == $gv_record_no, true, false)
      

      split into single records

    3. En cada ejecución de operación, la transformación generará un único registro JSON, que se puede escribir en el destino deseado.

Después de dividir y procesar registros individuales, un paso común siguiente es enviar un correo electrónico de resumen o un registro de registros procesados. Consulta Generar un registro de resumen después de procesar registros. Para consideraciones sobre la ejecución de operaciones por registro de forma concurrente, consulta Gestionar operaciones asincrónicas.