top of page

Transformações e Funcionalidades no PowerCenter

  • Foto do escritor: ETL PowerCenter
    ETL PowerCenter
  • 15 de ago. de 2018
  • 9 min de leitura

Como ferramenta visual, o Informatica PowerCenter oferece as funcionalidades a serem usadas num mapa, transformações, em formato de caixinhas.

Cada transformação possui uma finalidade específica e características próprias.

É importante compreender cada uma delas e para que servem para interpretar melhor uma especificação e compreender um mapa.

Neste módulo vamos ver e conhecer as propriedades e características das principais transformações utilizadas no desenvolvimento de mapas ETL no Informatica PowerCenter.

Para usar uma transformação é preciso primeiro colocá-la no mapa.

Com o mapa aberto selecione clique num dos ícones da barra transformations.

ree

Com o ícone da transformação selecionada, clicamos uma vez na área do mapping designer.

A transformação escolhida aparece na área de trabalho pronta para ser utilizada.

ree






Um clique para selecionar a transformação, podendo assim arrastá-la, copiá-la ou até mesmo excluí-la.

ree









Ao editar uma transformação é preciso alterar/preencher alguns dados padrões.

São eles: Nome da transformação, descrição, e se for o caso, portas criadas (portas apenas de saída), variáveis.

ree





ree

No caso das portas criadas e variáveis, devemos também preencher suas descrições.

Ainda na aba transformation, preenchemos o campo description, isto é, um leve comentário sobre a função da transformação.

ree

Na aba ports, podemos trabalhar com as portas do fluxo.

A barra de ferramentas desta aba permite ao desenvolvedor manusear as portas.

ree



ree

Cria uma nova porta

ree

Copia uma porta

ree

Remove uma porta

ree

Cola uma porta copiada

ree

Move portas para cima e para baixo

Para se transformar um dado é necessário duplicar a sua porta, uma será só de entrada e a outra de saída. Na de saída ocorre a transformação do dado.


Por padrão toda vez que não vamos seguir com uma porta num fluxo desativamos sua porta de saída e quando criamos uma porta, desativamos a sua porta de entrada.


Cada porta criada deve ter o campo description preenchido com a sua funcionalidade.

ree

Para inserir uma função ou fórmula numa porta, primeiro ela deve estar marcada como porta apenas de saída ou variável.

Em seguida clicamos na seção expression correspondente da porta e escrevemos a função ou abrimos o expression editor clicando no ícone ao lado.

ree

ree

No expression editor podemos inserir e editar funções e expressões trabalhando com as portas da transformação.


Temos as abas functions, ports e variables.

Functions: Nela temos todas as funções possíveis separadas por categorias.


ree














Functions: Para utilizar uma função, abrimos a categoria onde ela se encontra ou vamos em all functions, e escolhemos a função desejada.

Nota-se, ao clicar na função, na parte inferior temos uma descrição da mesma e como usá-la. Clique duplo para colocar a função no editor.

ree

Ports:Nesta aba temos todas as portas usadas na transformação. Um clique e vemos a descrição completa da porta, duplo clique e o nome da porta é inserido no ponto onde está o cursor no editor.

ree

Variables: Nesta aba é possível escolher as variáveis. Podemos usar as dos sistema como passagem de valor (built-in), colocar uma variável do mapa (mapping variables)ou uma de parâmetros (mapping parameters)numa função/expressão.

Seguindo o padrão, um clique mostra a descrição e um clique duplo insere a mesma no ponto do cursor no editor.

ree

As variáveis do sistema (built-in) são: sysdate (hora do sistema) e sessstarttime (hora em que foi iniciada a sessão).

Na parte inferior do expression editor temos o numeric keypad (números) e o operator keypad (operadores lógicos).

ree






Operadores AND e OR. No primeiro caso (AND) as duas condições tem que acontecer e no segundo (OR) basta apenas uma condição satisfeita.

ree


A função ISNULL() testa se o valor testado é nulo ou não.

¡O operador NOT nega o resultado da condição a qual se refere. No exemplo, se o valor for nulo, o resultado em vez de ser verdadeiro será falso.

ree


A função IIF() faz o teste de uma condição. Funciona como um se. No exemplo, se o valor for igual a 5, o campo receberá “Valor é 5”, senão receberá “Valor diferente de 5”.

ree

A função Length() retorna o tamanho da string em questão. No exemplo, caso o campo TEXTO seja “Teste”, ela retornará o valor 5.

ree

As funções RTRIM() e LTRIM() funcionam retirando os espaços do campo em questão. RTRIM() tira os espaços da direita e LTRIM() da esquerda, combinando os dois todos os espaços são retirados dos dois lados.

ree

A função REPLACESTR() substitui um determinado caracter ou string por outro. No exemplo, a partir do primeiro caracter do campo TEXTO, substituir espaço por *.

ree

A função INSTR() verifica se dentro do campo dado existe o caracter ou string desejado, retornando a posição. No exemplo localizar apenas o espaço no campo TEXTO ou espaço a partir do primeiro caracter, a segunda ocorrência.

ree


A função SUBSTR() retira de dentro de uma string outra string de acordo com a posição pedida. No exemplo será retornado a string que começa na posição 1 e termina na posição 5 do campo TEXTO.

ree


As funções TO_CHAR(), TO_DECIMAL() e TO_INTEGER() convertem um valor para string, decimal e inteiro respectivamente. A porta que receber essa conversão precisa estar no tipo resultado da conversão.

ree



As funções TO_CHAR() e TO_DATE() tem estrutura semelhantes quando TO_CHAR() é aplicado para data. Nesse caso é preciso dizer o formato de data que será retornado. No exemplo, o formato será DD/MM/YYYY.

ree

ree

Em algumas transformações, temos a associação entre diferentes fluxos ou tabelas, neste caso, esta associação é feita através de uma condição.


Esta condição é definida na aba condition dentro das transformações pertinentes. Ex.: Joiner e Lookup.

Neste caso, temos dois fluxos com uma chave em comum e informações complementares. Faremos um join desses fluxos e usaremos como condição esta chave.


ree

Dentro da transformação, clicamos na aba condition, inserimos uma linha de condição clicando no botão padrão destacado e selecionamos em master e detail os campos que se relacionarão.

ree









Usando a transformação join, juntamos dois fluxos e buscamos todas as ocorrências possíveis na condição. A igualdade da condição pode trazer mais de um registro.


No caso de um lookup, buscamos apenas uma ocorrência. O retorno será do primeiro registro que for encontrado e atender a condição da transformação.


A condição funciona da mesma forma que no exemplo anterior.


ree

A condição funciona da mesma forma que no exemplo anterior.


ree







Uma transformação não precisa ser exclusiva de um mapa. Ela pode fazer parte de vários mapas de um mesmo folder. Neste caso, estamos usando uma transformação reutilizável. A transformação é criada uma vez e pode ser importada para dentro de qualquer mapa do folder que se aplique ao caso.


Para criá-la, clicamos no ícone “Transformation Developer” dentro do “Designer”.


ree




Criamos dentro do “Transformation Developer” uma transformação qualquer, neste exemplo, uma “Expression”.

Editamos normalmente a transformação, como se fosse parte de um mapa.


ree

ree



Agora, a transformação pode ser encontrada dentro da seção “Transformations” do folder em que estamos trabalhando.


A partir daí ela poderá ser inserida em qualquer mapa do folder, precisando apenas ser arrastada para dentro do mesmo. Para isso, ela precisa fazer parte do contexto desse mapa, pois a mesma não poderá ser alterada e estará marcada como reutilizável.

ree










Uma vez alterada dentro do “Transformation Developer”, a alteração será replicada para todas as suas ocorrências dentro do mesmo folder.


ree

ree





Transformações Passivas:

Não altera o número de linhas – mesmo número de linhas que entra, sai.

Exemplos: Expression and Lookup transformations


Transformações Ativas:

Pode alterar a quantidade de linhas (Agrupando, filtrando, etc.)

Exemplos: Aggregator, Filter, Joiner transformations

ree



Source Qualifier


Seleciona dados de flat files e bases relacionais. Para bases relacionais, cria uma consulta SQL.

ree
Ativa

As portas representam as colunas da tabela ou os campos de um arquivo texto.

Todas as portas são de input/output (I/O)

Padrão de Nomenclatura:

<SQ>_<descrição>, onde descrição entende-se por nome da tabela ou conjunto de tabelas do qual estão sendo extraídos os dados.



ree

Expression Transformation


Executa calculos linha a linha (sem agregação)


ree
Passiva

O campo Expression fica disponível apenas nas portas de saída (O) ou Variável (V)

Padrão de Nomenclatura:

<EXP>_<descrição>




Caso de Uso


Para se retirar os espaços dos dados de uma porta, é preciso duplicá-la. Uma fica sendo a de entrada dos dados e a outra a de saída dos dados formatados.

O comando para retirar espaços à direita é RTRIM() e à esquerda LTRIM().


ree


ree

Filter Transformation


ree
Ativa

Todas as portas são de input/output (I/O)

A condição do filtro é sempre verdadeira, ou seja, os registros que atendem a condição passam para a próxima transformação.

Padrão de Nomenclatura:

<FIL>_<descrição lógica>


Caso de Uso


Cadastrar apenas os alunos do sexo masculino (Sexo = ‘M’). Como a idade está no formato string, convertê-la para número para cadastro na tabela ALUNOS_HOMENS.

Quando precisamos deixar passar no fluxo apenas um tipo de dado, um valor em certo campo, usamos um filtro, nesse caso, a transformação filter.

Para filtrar por Sexo = ‘M’, criamos um filtro e preenchemos sua condição.

Dentro do filtro, mudamos seu nome, preenchemos a descrição e clicamos na aba properties. A expressão de filtragem será inserida em filter condition.

O processo é o mesmo de inserir uma função no expression editor.


ree

ree

Para converter uma porta é preciso duplicá-la, o processo é o mesmo já visto, a diferença é que a porta de saída tem que ter o datatype com o tipo a ser convertido.

ree

ree


O comando para converter um dado formato para o formato decimal é TO_DECIMAL().

Verifique sempre que o tamanho da nova porta seja igual ao do campo da tabela destino onde o dado será cadastrado. Em caso de campo decimal é sempre bom verificar se existem ou não casas decimais.

ree

Mapa

ree

ree


Sorter Transformation


Ordena os registros por uma ou mais portas


ree
Ativa

Todas as portas são de input/output (I/O)

A forma de ordenação (ascendente ou descendente) pode ser definida para cada chave

Na aba Properties existe a opção distinct

Padrão de Nomenclatura:

<SRT>_<descrição>


ree


Rank Transformation


ree
Ativa

Faz um Rank de acordo com a chave marcada no Group By para a porta Rank (R)

Padrão de Nomenclatura:

<RNK>_<porta>_<tipo>_<xxx>, onde tipo pode ser top ou bot e xxx a quantidade de registros ranqueados.



ree


Sequence Generator Transformation


Gera um sequencial


ree
Passiva

Não possui porta de Input e as portas existentes não podem ser alteradas.

Padrão de Nomenclatura:

<SEQ>_<nome da coluna>



ree

ree

Joiner Transformation


Realiza joins heterogêneos em dois fluxos de dados


ree
Ativa

As portas podem ser de input ou input/output

Padrão de Nomenclatura:

<JNR>_<tabela master>_<tabela detail>, onde entende-se por tabela o ultimo objeto do fluxo, já que pode haver um joiner no meio do fluxo. Caso isso aconteça apenas à descrição do objeto deve fazer parte da formação do nome do joiner, sem a necessidade do seu prefixo.

Uma origem de dados deve ser designada como Master. Para melhor performance esta deve ser a com menor quantidade de linhas

Join Types

Normal Join: Retorna somente as linhas que atendam a condição

Master Outer Join: Retorna todas as linhas do Detail e as correspondências no Master

Detail Outer Join: Retorna todas as linhas do Master e as correspondências no Detail

Full Outer Join: Retorna todas as linhas do Master e do Detail mesmo não tendo encontrado a condição

ree

ree


Lookup Transformation


Retorna valores de uma tabela ou um arquivo texto baseado em um valor de entrada


ree
Passiva

As portas de output/lookup (O/L) são o retorno da LKP, caso a condição não seja atendida, retorna NULL

Padrão de Nomenclatura:

<LKP>_<nome da tabela> ou _<objetivo fim do lookup>


Propriedades:

ree

Unconnected Lookup

A chamada desta Lookup será feita como uma Função dentro da transformação Expression


ree

Uma porta deverá ser

Marcada como retorno

Esta transformção não será ligada por links a nenhuma outra transformação, ficará “solta” no mapa

ree

ree


Update Strategy Transformation


Especifica a ação de cada linha na tabela de destino (insert, update, delete, ou reject) baseado em uma expressão.

ree
Ativa

Padrão de Nomenclatura:

<UPS>_<nome do target>_<operação>, onde operação pode ser: upd,ins,del,rej. Caso o update strategy, dependendo de uma condição, possa executar operações diferentes, todas devem constar no nome.


Exemplo: IIF(ISNULL(COD_PRODUTO_lkp), DD_INSERT, DD_UPDATE)

  • As opções são: DD_INSERT(0), DD_UPDATE(1), DD_DELETE(2), DD_REJECT(3)

  • A condição é testada a cada linha

  • É gerado um SQL apropriado para cada operação: Insert, Update, Delete

  • DD_REJECT não é enviado para o banco, apenas é informado no log


ree


Aggregator Transformation


Realiza cálculos com agregações

ree
Ativa

As portas marcadas como GroupBy serão usadas como “chave” na agregação

Padrão de Nomenclatura:

<AGG>_<nome da tabela> ou _<descrição>.

Nos casos em que a dimensão tempo aparece, ela deverá ser colocada no nome.


Nesta transformação, temos uma lista específica de funções que poderão ser utilizadas.

Ao definir o group by, podemos aplicar a função desejada em qualquer outro campo que passe pela transformação.


ree















A função avg serve para retornar a média do campo solicitado em relação ao grupo de campos, no exemplo, teremos o retorno da média de todas as notas de um determinado aluno.

ree

A função count serve para fazer a contagem de registros de um determinado campo que integra um agrupamento definido. No exemplo, agrupamos pela turma e contamos quantos alunos temos em cada uma.


ree

A função max define o máximo valor de um campo em razão de um agrupamento definido. No exemplo, a maior nota de cada turma e matéria e o nome do aluno. A função min funciona de forma contrária, trazendo o valor mínimo.


ree

A função sum promove um somatório dos valores de um determinado campo em decorrência do agrupamento indicado. No exemplo, teremos a quantidade total em estoque de um produto, independente da loja.


ree

ree


Router Transformation


ree

QTD_PRODUTO < 50

QTD_PRODUTO >= 50 AND

QTD_PRODUTO < 200

QTD_PRODUTO >=200




Envia as linhas para diferentes direções baseado em filtros

ree

Ativa

Padrão de Nomenclatura:

<RTR>_<descrição lógica dos grupamentos>





Router Groups
ree



Grupo de entrada



Grupos de saída definidos pelo usuário

-Cada grupo atende a uma condição

-As condições de TODOS os grupos são avaliadas a cada linha

-A mesma linha pode atender a mais de uma condição







As linhas que não atendem a nenhuma das condições definidas, caem no Default group






ree


Stored Procedure Transformation


Executa uma Stored Procedure


ree
Passiva

Pode ser conectada ou desconectada

Pode ser executada antes ou depois do Source ou do Target

Padrão de Nomenclatura:

<SP>_<nome da stored procedure>



ree


Normalizer Transformation


ree
Ativa

Ao passar um registro no fluxo, ele é transformado em diferentes registros de acordo com o número de colunas a serem normalizadas

Padrão de Nomenclatura:

<NRM>_<descrição>

As portas devem ser criadas na Aba Normalizer. Não é possível arrastar as portas de uma outra transformação.

ree

ree


Union Transformation


ree
Ativa

Une dois fluxos de dados com a mesma estrutura.

Padrão de Nomenclatura:

<UNI>_<descrição>


ree





ETL PowerCenter - by Diogo Vidal

São Paulo-SP
 
 
 

1 Comment


Raquel Lima Guimarães
Raquel Lima Guimarães
Oct 21, 2021

Parabéns, super completo!

Like
bottom of page