Variáveis de loop (DataStage®)

É possível especificar que o estágio Transformer gere várias linhas de saída para cada linha de entrada definindo uma condição de loop.

Sobre variáveis de loop

É possível especificar que o estágio Transformer repita um loop várias vezes para cada linha de entrada lida. O estágio pode gerar várias linhas de saída correspondentes a uma única linha de entrada enquanto uma condição particular é true.

É possível utilizar variáveis de estágio na especificação desta condição. As variáveis de estágio são avaliadas uma vez depois de cada linha de entrada é lida e, portanto, mantêm o mesmo valor enquanto o loop é executado.

Também é possível especificar variáveis de loop. As variáveis de loop são avaliadas cada vez que a condição de loop é avaliada como true. As variáveis de loop podem mudar para cada iteração do loop e para cada linha de saída gerada.

O nome de uma variável deve ser exclusivo em ambas, as variáveis de estágio e as variáveis de loop.

Definindo uma condição de loop

Você especifica que o estágio Transformer executa loop ao processar cada linha de entrada, definindo uma condição de loop. O loop continua iterando enquanto a condição é true.

É possível usar a variável do sistema @ITERATION em sua expressão. @ITERATION realiza uma contagem do número de vezes que o loop foi executado, começando em 1. @ITERATION é reconfigurado como 1 quando uma nova linha de entrada é lida.

Para definir uma condição de loop:
  1. No campo Loop while, clique no ícone de editor de expressão.
    1. No editor de expressão, especifique a expressão que controla seu loop. A expressão deve retornar um resultado de true ou false.
    2. Clique em Salvar e retornar.
  2. No campo Limite de aviso de iteração de loop, defina um limite de aviso.

É possível definir uma condição de loop com falha que resulta em loop infinito e ainda assim compila com sucesso. Para capturar tais eventos, é possível especificar um limite de aviso de iteração de loop. Um aviso é gravado no log da tarefa quando um loop se repetiu o número especificado de vezes, e o aviso é repetido toda vez que um múltiplo desse valor é atingido.

Assim, por exemplo, se você especificar um limite de 100, os avisos serão gravados no log da tarefa quando o loop iterar 100 vezes, 200 vezes, 300 vezes, e assim por diante. A configuração do limite para 0 especifica que nenhum aviso é emitido. O limite padrão é de 10000, o que é um bom valor inicial. É possível definir um limite para todas as tarefas em seu projeto, configurando a variável de ambiente APT_TRANSFORM_LOOP_WARNING_THRESHOLD como um valor de limite.

O limite se aplica tanto à iteração de loop, quanto ao número de registros mantidos no cache de linha de entrada (o cache de linha de entrada é usado ao agregar valores em colunas de entrada).

Definindo uma variável de loop

É possível declarar e utilizar variáveis de loop dentro de um estágio Transformer. É possível usar as variáveis de loop em expressões dentro do estágio.

É possível usar variáveis de loop quando uma condição de loop é definida para o estágio Transformer. Quando um loop é definido, o estágio Transformer pode gerar várias linhas como saída para cada entrada de linha para o estágio. As variáveis de loop são avaliadas todas as vezes que o loop é iterado e, assim, pode mudar seu valor para cada linha de saída. Tais variáveis são acessíveis apenas por meio do estágio Transformer em que são declaradas. Não é possível utilizar uma variável de loop em uma derivação de variável de estágio.

As variáveis de loop podem ser usadas da seguinte forma:

  • Valores podem ser designados a elas por expressões.
  • Elas podem ser usadas em expressões que definem uma derivação de coluna de saída.
  • As expressões que avaliam uma variável podem incluir outras variáveis de loop ou variáveis de estágio, ou a própria variável sendo avaliada.

Quaisquer variáveis de loop que você declara são mostradas em uma tabela na área de janela direita da área de links. A tabela se parece com a tabela de link de saída e a tabela de variáveis de estágio. É possivel maximizar ou minimizar a tabela clicando na seta na barra de título da tabela.

A tabela lista as variáveis de loop juntamente com as expressões que são usadas para derivar seus valores. As linhas de links se unem às variáveis de loop com colunas de entrada usadas nas expressões. Links do lado direito da tabela ligam as variáveis às colunas de saída que as utilizam ou às variáveis de estágio que elas utilizam.

Para definir uma variável de loop:
  1. No campo Variáveis de loop, clique em Incluir variável de loop +.
  2. Insira o nome da variável, o valor inicial, o tipo SQL, as informações estendidas (se as variável contêm dados Unicode), a precisão, a escala e uma descrição opcional. Os nomes de variável devem começar com um caractere alfabético (a-z, A-Z) e podem conter apenas caracteres alfanuméricos (a-z, A-Z, 0-9).
  3. Clique em Aplicar mudanças.