Avançar para o conteúdo

Expression Transformation Informatica PowerCenter

Expression Transformation do Informatica PowerCenter

A transformação Expression é uma transformação passiva.

Você pode utilizá-la para realizar cálculos ou avaliar condições, sempre linha a linha.

Expression x Aggregator

A função Expression Transformation tem algumas semelhanças com a transformação Aggregator, mas a grande diferença é que a primeira realiza a leitura e oferece os resultados linha a linha, enquanto a segunda trabalha por grupos.

Manter ordem das linhas de entrada com Expression Transformation

Esta é uma configuração avançada da transformação. Com essa opção selecionada o Data Integration Service não faz nenhum tipo de otimização que acarrete na alteração da ordem das linhas de entrada.

Manter registro do atributo anterior com Expression Transformation

Como sabemos, ao usar a função Expression Transformation, é leitura de dados é feita linha por linha, e assim são feitos seus cálculos.

Como podemos fazer se quisermos salvar o registro lido anteriormente com o que está a ser lido?

É bem simples!

Atenção: caso utilize este método, não esqueça de ordenar o seus registros de entrada, por exemplo, com a transformação Sorter.

No nosso exemplo, usamos RECORD_PREV_NUMERO e PREV_NUMERO.

Vamos por partes:

As leituras no Informatica PowerCenter são feitas linha a linha, correto?

Então, na primeira rodada, na primeira linha, as variáveis RECORD_PREV_NUMERO e PREV_NUMERO não tem valor, recebendo como input o valor 0.

Quando vamos para a próxima linha, a porta PREV_NUMERO recebe o valor NUMERO, o qual varia de acordo com o arquivo de origem.

A porta NUMERO recebe, também, o valor de NUMERO.

Ao chegar na porta V_COUNTING = IIF (RECORD_PREV_NUMERO = NUMERO, V_COUNTING + 1, 1), a comparação é entre um valor nulo (RECORD_PREV_NUMERO) e o valor lido do primeiro registro e o output será 1.

Fica mais ou menos assim:

O PWC termina de ler a primeira linha do input e passa para a segunda.

Você lembra que RECORD_PREV_NUMERO recebe PREV_NUMERO? Neste momento, o valor NUMERO da rodada anterior está guardada em PREV_NUMERO e por isso esse será o valor a ser guardado por RECORD_PREV_NUMERO.

Terminada a leitura dessa linha, PREV_NUMERO recebe o NUMERO do segundo elemento do input e temos este resultado:

As variáveis de contagem continuam exibindo o número 1, afinal, é a primeira vez que o número 2 aparece na sequência.

Vamos agora ver o que acontece quando o número 2 é lido novamente, numa terceira rodada:

Como esperado, o contador passou para o valor 2, indicando uma segunda leitura de um mesmo algarismo.

Como o contador faz os cálculos comparando o algarismo lido com o que veio anterior a ele, é fundamental ter os dados ordenados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *