Dividir um arquivo em registros individuais usando SourceInstanceCount no Jitterbit Studio
Introdução
Este padrão de design pode ser usado para dividir um pequeno conjunto de dados de origem em um arquivo JSON ou XML com múltiplos registros em vários arquivos, cada um contendo um único registro, usando a função SourceInstanceCount.
Dica
Este padrão é recomendado apenas para um pequeno conjunto de registros de origem quando os dados de origem são complexos (hierárquicos). Para dados de origem simples (não hierárquicos), consulte Dividir um arquivo em registros individuais usando SCOPE_CHUNK. Este padrão não é recomendado para grandes conjuntos de dados porque a carga útil deve ser processada repetidamente para cada registro de origem.
Caso de uso
Neste cenário, os dados de origem são um arquivo JSON complexo que contém um pequeno número de múltiplos registros, e o endpoint de destino requer que os registros sejam processados individualmente.
Padrão de design e exemplo
Esta cadeia de operações de exemplo é usada para ilustrar o padrão de design, cujas características principais são descritas abaixo:

-
A operação Get File with Multiple Records recupera o arquivo JSON com múltiplos registros da origem e escreve o conteúdo em uma variável (nomeada
gv_multiple_records). -
Após o sucesso dessa operação, a operação Control executa um script de controlador, cujas partes são descritas abaixo:
<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>-
A função
CountSubStringé usada para contar o número de registros da origem (substituindoassigned_locationpor qualquer campo que apareça apenas uma vez para cada registro nos dados de origem). -
Uma variável global (
gv_record_no) é inicializada em1e será usada para incrementar o número de registros. -
A função
Whileé usada para percorrer a contagem de registros e executar a próxima operação para cada registro. -
RunOperationé chamada uma vez por registro e está sujeita a um limite no nível do agente para chamadas síncronas feitas dentro de um único loopWhile(50por padrão). Esta é uma razão adicional pela qual este padrão é recomendado apenas para um pequeno conjunto de registros; consulte a nota emRunOperationpara obter detalhes.
-
-
Conforme o script percorre os registros, a operação Split into Single-record Files é executada repetidamente. Estas são as etapas da operação:
- O conteúdo do arquivo JSON com múltiplos registros contido em
gv_multiple_recordsé usado como origem para a transformação. -
Na transformação, um script de condição é definido no nó do item para iterar através de cada registro:
If(SourceInstanceCount() == $gv_record_no, true, false)
-
Em cada execução da operação, a transformação produzirá um único registro JSON, que pode ser escrito no destino desejado.
- O conteúdo do arquivo JSON com múltiplos registros contido em
Após dividir e processar registros individuais, uma próxima etapa comum é enviar um email de resumo ou log de registros processados. Consulte Gerar um log de resumo após processar registros. Para considerações sobre a execução de operações por registro de forma concorrente, consulte Gerenciar operações assíncronas.