Stream Excel

Descubra mais sobre o componente Stream Excel e saiba como utilizá-lo na Digibee Integration Platform.

O Stream Excel lê um arquivo local de Excel linha por linha em uma estrutura JSON e dispara subpipelines para processar cada linha. Esse recurso costuma ser indicado em situações nas quais há a necessidade de processamento de arquivos grandes.

Parâmetros

Dê uma olhada nos parâmetros de configuração do componente:

Parâmetro
Descrição
Valor padrão
Tipo de dado

File Name (DB)

Determina o nome ou full file path (ex.: tmp/processed/file.txt) do arquivo local que será lido.

file.xlsx

String

Sheet Name

Nome da planilha de Excel a ser lida.

Plan1

String

Sheet Index

Index da planilha de Excel a ser lida.

N/A

Inteiro

Use Sheet Index Instead Of Name

Se ativada, a opção permite que o index da planilha seja informado no lugar do nome.

False

Booleano

Max Fractional Digits

Determina o número preciso de dígitos fracionários em uma célula numérica no momento da leitura do arquivo Excel.

5

Inteiro

Read Specific Columns As String

Indica quais colunas o componente deve ler em forma de string ao invés do seu formato original. Cada coluna desejada deve ser informada separadamente por uma vírgula (ex.: A,B,X,AA).

B,D,F

String

Read All Columns As String

Se selecionada, a opção fará com que todas as colunas sejam lidas como string.

False

Booleano

Column Identifier

Em caso de erros, esta é a coluna que será enviada ao sub-processo onException.

A

String

Parallel Execution Of Each Iteration

Se selecionada, a opção fará com que o componente realize a leitura de linhas do arquivo em paralelo.

False

Booleano

Fail On Error

A ativação desse parâmetro suspende a execução do pipeline apenas quando há uma ocorrência grave na estrutura da iteração, impedindo a sua conclusão por completo. A ativação do parâmetro Fail On Error não tem ligação com erros ocorridos nos componentes utilizados para a construção dos subpipelines (onProcess e onException).

False

Booleano

Advanced

Quando selecionada, a opção solicita a definição de parâmetros avançados.

False

Booleano

Skip

Número de linhas a serem puladas antes da leitura do arquivo.

N/A

Inteiro

Limit

Número máximo de linhas a serem lidas.

N/A

Inteiro

O Stream Excel realiza processamento em lote. Para entender melhor o conceito, leia a documentação Processamento em lote.

O Stream Excel não é capaz de ler arquivos no formato .xls, mas apenas no formato .xlsx.

Fluxo de Mensagens

Entrada

O componente aceita qualquer mensagem de entrada, podendo utilizá-la por meio de Double Braces.

Saída

O componente retorna um JSON contendo o total de execuções, total de sucesso e total de falhas.

  • sem erro

{
    "total": 5,
    "success": 5,
    "failed": 0
}
  • com erro

{
    "total": 5,
    "success": 3,
    "failed": 2
}
  • 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 saber se uma linha foi processada corretamente, deve haver o retorno { "success": true } para cada linha processada.

O componente joga uma exceção se o arquivo não existir ou não puder ser lido. Do contrário, uma mensagem é produzida na saída com a exceção ocorrida.

Você também pode encontrar um erro ao fazer o upload de um arquivo .xlsx no Google Drive e, em um pipeline, usar o componente Google Drive para fazer o download e o componente Stream Excel para ler este arquivo.

Quando você faz essa ação, um comportamento inesperado do Google Sheets altera o arquivo .xlsx. Isso faz com que o Stream Excel leia todas as linhas da planilha (incluindo aquelas em branco) ao invés de ler apenas as linhas com conteúdo. Este comportamento não está relacionado com a Digibee Integration Platform.

Como solução alternativa, você pode copiar o conteúdo da planilha e colar em uma nova guia no mesmo arquivo .xlsx. Se você fizer esse procedimento, não copie as linhas em branco ou o mesmo erro irá ocorrer.

A manipulação de arquivos dentro de um pipeline ocorre de forma protegida. Todos os arquivos podem ser acessados apenas por um diretório temporário, no qual cada pipeline key dá acesso ao seu próprio conjunto de arquivos.

Stream Excel em ação

Abaixo será demonstrado como o componente se comporta em determinada situação e a sua respectiva configuração.

Ler arquivo de Excel e analisar resultado

Para esse exemplo, vamos considerar que já possuímos um arquivo Excel no fluxo do pipeline que foi baixado através de componentes como: Google Drive, OneDrive e assim por diante. O arquivo em questão possui uma planilha com os nomes dos 100 bilionários selecionados pela Forbes.

O componente Stream Excel será configurado da seguinte forma:

  • File Name: file.xlsx

  • Sheet Name: Plan1

  • Use Sheet Index Instead of Name: desativado

  • Max Fractional Digits: 5

  • Read Specific Columns As String: B,D,F

  • Read All Columns As String: desativado

  • Column Identifier: A

  • Parallel Execution of Each Iteration: desativado

  • Fail On Error: desativado

  • Advanced: desativado

Entrada

{
"fileName": "sheets.xlsx"
}

Saída

{
"total": 102,
"success": 0,
"failed": 102
}

Resultado do log

Para visualizar esse log, será utilizada a aba de Mensagens do pipeline. Conforme demonstrado na imagem abaixo, todas as linhas da planilha foram lidas individualmente pelo componente, incluindo até o nome das colunas.

Ler arquivo de Excel e analisar uma planilha inexistente no arquivo

Para esse exemplo, considere a mesma planilha analisada anteriormente. No entanto, será selecionada uma planilha que não existe.

O componente Stream Excel irá retornar a seguinte mensagem de erro (Fail On Error está desativado):

{
"success": false,
"message": "Sheet 'InvalidSheetName' does not exist",
"exception": "com.monitorjbl.xlsx.exceptions.MissingSheetException"
}

Ler arquivo de Excel inválido

Para esse exemplo, considere um arquivo inexistente no fluxo do pipeline.

O componente Stream Excel irá retornar a seguinte mensagem de erro (Fail On Error está desativado):

{
"success": false,
"message": "File invalidsheets.xlsx does not exist.",
"exception": "com.digibee.pipelineengine.exception.PipelineEngineRuntimeException"
}

Atualizado