Exemplo de loop: vários valores repetidos em um único campo (DataStage®)

É possível usar o estágio Transformer para converter uma única linha para dados com valores de repetição em uma única coluna para várias linhas de saída.

Dados de entrada com vários valores de repetição em um único campo

Quando você tem dados onde uma única coluna contém vários valores de repetição que são separados por um delimitador, é possível comprimir os dados para produzir várias colunas de saída: uma para cada um dos valores delimitados. Também é possível especificar que determinados valores sejam filtrados, e que uma nova linha não seja criada.
Por exemplo, se a linha de entrada contém os dados a seguir.
Col1 Col2 Nomes
abc def Jim/Bob/Tom
Você deseja comprimir o campo de nome para que uma nova linha seja criada para cada novo nome indicado pelo caractere barra invertida (/). Você também deseja filtrar o nome Jim e eliminar a coluna denominada Col2, de modo que os dados de saída resultantes para a coluna de exemplo produzam duas linhas com duas colunas.
Col1 Nome
abc Bob
abc Tom
Para implementar esse cenário no estágio Transformer, faça as configurações a seguir:
Variável de estágio
Defina uma variável de estágio para manter uma contagem dos campos separados pelo caractere delimitador. O valor de StageVar1 é configurado pela expressão a seguir:
DCOUNT(inlink.Names, "/")
Condição de loop
Insira a expressão a seguir como a condição de loop:
@ITERATION <= StageVar1
O loop continua iterando para a contagem na coluna Nomes.
Variável de loop
Defina uma variável de loop para fornecer o valor para a nova coluna Nome em suas linhas de saída. O valor de LoopVar1 é configurado pela expressão a seguir:
FIELD(inlink.Names, "/", @ITERATION, 1)
Esta expressão extrai as subsequências de caracteres delimitadas pelo caractere de barra invertida (/) da coluna de entrada.
Restrição de link de saída
Defina uma restrição de link de saída para filtrar o nome de Jim. Use a expressão a seguir para definir a restrição:
LoopVar1 <> "Jim"
Metadados e derivações do link de saída
Defina as colunas do link de saída e suas derivações: Elimine a coluna Col2 ao não inclui-la nos metadados.
  • Col1 - inlink.col1
  • Name - LoopVar1