Os loops no KNIME são ferramentas úteis que nos ajudam a lidar com diferentes tarefas. Repetir um processo é o uso mais simples e comum de loops. Mas também há tarefas mais complicadas que podem ser tratadas com loops e que vão além de apenas repetir o processo.
KNIME possui vários nós para executar diferentes tipos de loops. Aqui vamos apresentar alguns dos loops mais utilizados do KNIME.
- Counting Loop Start
- Chunk Loop Start
- Column List Loop Start
- Generic Loop Start
- Table Row to Variable Loop Start
- Group Loop Start
- Interval Loop Start
- Recursive Loop Start
Em primeiro lugar, devemos saber que a construção de loop no KNIME consiste em um node de início de loop, executando algumas operações e um node de final de loop.
Existem diferentes nodes de início e fim de loop. Alguns nodes de início têm seus próprios e específicos nodes de final de loop, enquanto alguns usam nodes genéricos ou gerais de fim de loop.
Você pode encontrar a maioria desses loops dentro do KNIME Analytics Platform em “Node Repository” na categoria “Workflow Control” / “Loop Support”.
Vamos verificá-los um por um:
1 – Counting Loop Start
Este node executa uma tarefa simples – ele pega uma tabela de entrada e repete a execução dos nodes dentro da construção de loop por um número definido de vezes.
Este tipo de loop pode ser encerrado por um node Loop End (que concatena as saídas), um node Variable Condition Loop End ou um node Loop End (Column Append) (que une as saídas). O último pode ser usado em casos mais específicos ao aplicar este tipo de loop.
Um exemplo de Counting Loop Start pode ser visto em uma de nossas postagens anteriores sobre como obter o conteúdo de uma página da web em KNIME. Neste exemplo, usamos um Counting Loop Start para criar um URL exclusivo em cada iteração e extrair o conteúdo de que precisamos. O nó Loop End é usado para coletar a saída de cada iteração e fechar o loop.
A configuração do node de Counting Loop Start é direta; você só precisa definir o número de loops.
2 – Chunk Loop Start
Este tipo de loop permite que você percorra as linhas da tabela em blocos. Na primeira iteração, ele escolhe o primeiro número de linhas, opera e em seguida, o próximo número de linhas e assim por diante.
Você pode definir
- O número de linhas por bloco – então o número de blocos seria o número total de linhas dividido pelo número que você definiu (as linhas restantes produzem um bloco adicional)
- ou
- O número de chunks – então o número de linhas por chunk seria o número total de linhas dividido pelo número que você definiu (arredondado para o próximo inteiro).
Como o ciclo de contagem, o ciclo de blocos pode ser encerrado usando um
- Loop End Node (muito provavelmente), ou
- Variable Condition Loop End ou
- Loop End (Column Append) (a aplicação deste aqui também é rara).
Por exemplo, suponha que temos uma tabela com mais de 10 milhões de linhas e queremos escrevê-la no formato Excel. Sabemos que o excel possui um limite máximo de linhas, que é cerca de 1 milhão (1.048.576).
Portanto, nesse caso, podemos achar o nó Chunk Loop Start muito útil para fazer um loop em nossa tabela em 10 chunks (1 milhão de linhas cada) e escrever cada chunk em um arquivo Excel separado.
3 – Column List Loop Start
Este nó de início de loop pega uma lista de colunas (lista “Incluir”) e define o número de loops igual ao número de colunas na lista e passa essas colunas uma a uma para cada iteração.
As outras colunas da tabela que não estão na lista serão passadas para todas as iterações. Para fechar esse loop, geralmente usamos o nó Loop End (Column Append).
Se você precisar usar o nó Loop End para fechar um column list loop, uma vez que a estrutura da tabela difere em cada iteração, você deve renomear / reclassificar colunas para criar a mesma estrutura em todas as iterações ou marcar a opção “Permitir alteração das especificações da tabela” na janela de configuração do node Loop End.
4 – Generic Loop Start
Usando o Generic Loop Start podemos repetir o loop até que uma condição em uma de nossas variáveis de fluxo seja atendida. O próprio node de início de loop não possui configurações específicas, mas você deve definir a condição para a variável de fluxo desejada na janela de configuração de seu node final de loop específico, que é o Variable Condition Loop End.
5 – Table Row To Variable Loop Start
Este loop se comporta como o loop de chunk quando definido para 1 linha por chunk, mas converte os valores da tabela em variáveis de fluxo. Este loop pega as linhas da tabela uma por uma, converte os valores em variáveis de fluxo e passa para os nós internos do loop.
Os nós finais do loop podem ser os
- Loop End, ou
- Variable Condition Loop End ou
- Loop End (Column Append)
5 – Group Loop Start
Usando este início de loop, você pode dividir as linhas em grupos com base em um ou mais atributos e operar cada grupo separadamente. A configuração do nó é muito simples e precisamos apenas selecionar as colunas de agrupamento.
Podemos usar todos os finais de loop mencionados anteriormente para fechar este loop, mas é claro, o nó Loop End tem a maior chance de ser o único a fechar este loop.
6 – Interval Loop Start
Este loop é quase o mesmo que o counting loop, com a diferença que em vez de definir um número como o número de loops, inserimos um número como o ponto inicial (“From”), um número como o ponto final (“To”) e um número como o tamanho do passo (“Step”).
Portanto, por exemplo, se definirmos 0 como o ponto inicial, 10 como o ponto final e 2,5 como o step, teríamos um loop com 4 iterações. Esses números podem ser duplos ou inteiros. Temos acesso aos valores de “From”, “To”, “Step” e “valor do loop” atual através das variáveis de fluxo dentro do loop.
7 – Recursive Loop Start
Este loop se comporta um pouco diferente dos outros tipos.
Trabalhando exclusivamente com seu final de loop, o node Recursive Loop End , esse tipo de loop pode enviar a saída de cada iteração de volta ao início como entrada.
O node Recursive Loop End tem duas portas de entrada. A porta superior é aquela que coleta dados para a saída final, e a porta inferior alimenta o nó Início do Loop Recursivo na segunda iteração e nas próximas. Este loop também possui uma variante de duas portas ( Recursive Loop Start (2 portas) / Recursive Loop End (2 portas) ) o que torna a funcionalidade deste loop ainda mais interessante.
O final do loop recursivo tem 3 opções para finalizar o loop:
- Um número mínimo de linhas que faz com que o loop continue iterando enquanto a saída tem pelo menos esse número de linhas.
- Um número máximo de loops que termina o loop após este número de iterações.
- A opção “Terminar loop com variável”, que permite terminar o loop se o valor da variável de fluxo selecionada for “verdadeiro”.
Embora esta lista termine aqui, existem outros loops disponíveis no KNIME. Se você verificar o seu “Node Repository” na categoria “Other Data Types” / “Time Series” / “Transformation”, você encontrará outro node de início de loop denominado Window Loop Start .
Esse loop possibilita que façamos um loop sobre nossa entrada em blocos, onde esses blocos são definidos por um tamanho de janela e um tamanho de passo.
Existem ainda mais tipos de loop no KNIME que seriam úteis em casos de uso específicos, e você pode encontrá-los pesquisando seu repositório de nós ou NodePit .
Este post é uma tradução livre a adaptada do originalmente escrito por Armin Ghassemi Rudd em blog.statinfer.com
Colaboração de Natanael Domingos – Data Analyst HupData