Stream CSV Reader
Saiba mais sobre o conector Stream CSV Reader e como usá-lo na Digibee Integration Platform.
O Stream CSV Reader lê um arquivo CSV local linha por linha em uma estrutura JSON e aciona subfluxos para processar cada linha. Esse recurso é recomendado para cenários em que arquivos grandes precisam ser processados de forma eficiente e em escala.
Parâmetros
Configure o conector usando os parâmetros abaixo. Os campos que suportam expressões Double Braces são marcados na coluna Suporta DB.
Este conector é compatível com o parâmetro Alias, que permite salvar sua saída e referenciá-la posteriormente no fluxo usando expressões Double Braces. Saiba mais.
File Name
Nome do arquivo CSV local a ser lido.
String
✅
data.csv
Charset
Codificação de caracteres usada para ler o arquivo.
String
❌
UTF-8
Element Identifier
Em caso de erros, os atributos definidos serão enviados para o subprocesso onException.
String
❌
data
Parallel Execution Of Each Iteration
Se ativado, cada linha é processada em paralelo.
Booleano
❌
False
Ignore Invalid Charset
Se ativado, caracteres com codificação inválida são ignorados.
Booleano
❌
False
Fail On Error
Se ativado, a execução do pipeline é interrompida em caso de erro. Se desativado, a execução continua, mas a propriedade "success" será definida como false.
Booleano
❌
False
Advanced
Ativa parâmetros avançados.
Booleano
❌
False
Delimiter
Define qual delimitador usar.
String
❌
N/A
Skip
O número de linhas a serem puladas antes de começar a ler o arquivo.
Integer
✅
N/A
Limit
Número máximo de linhas a serem lidas do arquivo. Um valor igual a 0 indica que não há limite.
Integer
✅
0
Chunk Size
Number of lines to process in each batch.
Integer
✅
1
Ignore Header
Se ativado, a primeira linha (cabeçalho) do arquivo é ignorada.
Booleano
❌
False
Custom Header (,)
Define uma lista separada por vírgulas de cabeçalhos personalizados a serem usados em vez dos cabeçalhos CSV originais.
Integer
❌
N/A
Filter Headers (,)
Define quais cabeçalhos CSV devem ser lidos, fornecidos como uma lista separada por vírgulas.
Integer
❌
N/A
Documentation
Campo opcional para descrever a configuração do conector e quaisquer regras de negócio relevantes.
N/A
String
Fluxo de mensagens
Entrada
O conector aguarda uma mensagem no seguinte formato:
Saída
total: Número total de linhas processadas.success: Número total de linhas processadas com sucesso.failed: Número total de linhas cujo processamento falhou.
Para informar que uma linha foi processada corretamente e incrementar o campo "success", o subpipeline onProcess deve retornar { "success": true } ao final de cada execução. Essa é a única forma de o output refletir corretamente o resultado dos processamentos.
Definindo os subpipelines
Para definir os subpipelines a serem executados em cada iteração, clique nos ícones onProcess ou onException no conector Stream CSV Reader. Ao clicar em um desses ícones, o subpipeline correspondente será criado (ou exibido, caso já exista).
Acessando dados dentro do subpipeline onProcess
Os dados disponíveis dentro do subpipeline onProcess dependem da configuração do parâmetro Chunk Size.
Modo linha a linha (Chunk Size = 1)
Quando o Chunk Size é 1 (padrão), cada linha do CSV é convertida em um objeto JSON e enviada individualmente ao subpipeline onProcess. As chaves do objeto correspondem aos cabeçalhos do CSV (ou aos Custom Headers, se configurados).
Dado um arquivo CSV com o seguinte conteúdo:
Cada chamada ao subpipeline onProcess recebe um corpo no seguinte formato:
Você pode acessar qualquer campo da linha diretamente usando expressões Double Braces. Por exemplo, para referenciar a coluna nome:
Se o parâmetro Element Identifier estiver configurado, um campo processedId contendo o índice da linha também é incluído no corpo da mensagem:
Modo lote (Chunk Size > 1)
Quando o Chunk Size é maior que 1, as linhas são agrupadas em lotes antes de serem enviadas ao subpipeline onProcess. O corpo da mensagem recebida contém o lote como um array sob a chave chunk:
chunk
Array de objetos JSON, um por linha do CSV no lote.
chunkSize
Número de linhas no lote atual.
startIndex
Índice da primeira linha do lote no arquivo original.
Tratamento de erros no loop
Quando ocorre um erro durante o processamento de uma linha ou lote, o conector aciona o subpipeline onException, se configurado. O corpo da mensagem enviada depende do modo de processamento:
Erro em modo linha a linha
processedId
Índice da linha que falhou.
error
Mensagem de erro retornada pela exceção.
exception
Nome completo da classe da exceção.
Erro em modo lote
Campo
Descrição
startIndex
Índice da primeira linha do lote que falhou.
chunkSize
Número de linhas no lote que falhou.
error
Mensagem de erro retornada pela exceção.
exception
Nome completo da classe da exceção.
Se ocorrer um erro estrutural grave dentro do próprio subpipeline onException, a execução do pipeline será interrompida e o erro será propagado para o próximo conector no fluxo principal.
Informações adicionais
O conector lança uma exceção se o File Name não existir ou não puder ser lido.
A manipulação de arquivos dentro de um pipeline ocorre de forma protegida. Todos os arquivos são acessados por meio de um diretório temporário, no qual cada chave de pipeline tem acesso apenas ao seu próprio conjunto de arquivos.
Este conector realiza o processamento em lote, o que significa que os dados são processados de forma contínua, controlada e em pequenos lotes.
Atualizado
Isto foi útil?