Olá pessoal, como estão!?!?

Continuando a desbravar as funções de transformação dentro do Pentaho, hoje quero apresentar mais uma que se chama Stream Lookup.

Deixo ciente que este não é uma continuação direta do post anterior, mas que irei utilizar parte da transformação passada para criar este post.

A função de stream lookup é uma transformação que ao ser adicionada no pipeline de dados que está sendo transformado no PDI, pode buscar um determinado valor em outra fonte e unificar na transformação paralela.

Mas como assim: suponha que exista uma transformação macro T e essa transformação possui duas fontes de dados A e B, que devem ir para o mesmo destino. Com o stream lookup conseguimos criar uma interseção entre estas duas fontes e direcioná-las para o destino correto.

Utilizando a transformação anterior adicione o step chamado text file input que irá consumir para o PDI arquivos em TXT.

CONFIGURAÇÃO TEXT FILE

Ao abrir a configuração do text file input procure o diretório que o arquivo txt foi armazenado e ao selecioná-lo, clique em add.

NOTA: aqui, cabe armazenar o diretório de arquivos txt ou qualquer outro como variável para facilitar o trabalho.

As opções de regular expressions são para limpar caracteres que são indesejáveis no arquivo.

Com o arquivo selecionado, adicione a transformação stream lookup ligada diretamente no passo anterior e ligue a outra transformação com a fonte de dados desejados também na lookup.

CONFIGURANDO A STREAM LOOKUP

Antes de começar, mantenha sua transformação desta forma:

ESQUEMA DE TRANSFORMAÇÃO

O símbolo circulado em preto com o sinal indica que esta é a stream principal que o lookup irá comparar quando receber dados da stream secundária.

Ao abrir o lookup, temos as seguintes configurações:

CONFIGURAÇÃO STREAM LOOKUP
  1. Lookup Step – configura qual é a stream principal
  2. Key for lookup value – seleciona uma coluna da stream A e uma da stream B e compara os valores. O campo field é destinado ao campo principal e o campo lookupfield para a stream secundária.
  3. Fields to retrieve – campos que serão terão suas informações extraídas e escritas no destino ou passadas para o próximo step.

Duas considerações a respeito dos dois campos get fields e get lookup fields

  1. Ao clicar em get fields todos os campos que estão na stream principal irão para a caixa do fields to retrieve
  2. Ao clicar em get lookup fields todos os campos irão para a comparação na primeira caixa – get lookup fields.

Como no lookup eu só quero comparar as duas streams pelo id não preciso selecionar outras colunas.

Aqui quero chamar atenção para o seguinte: Lembra da operação de checksum que cria um registro único para uma linha? Então, aqui ela pode ser utilizada para comparação de streams caso haja alguma mudança naquele registro.

Configurado o stream lookup, adicione o text file output à transformação e configure as colunas que irá receber do step de stream lookup.

COLUNAS DA STREAM LOOKUP

Estas foram as colunas que foram geradas pelo step do stream lookup. Você pode comparar os dois conjuntos de colunas clicando em get fields.

COLUNAS PARA COMPARAÇÃO

Em vermelho temos as colunas da stream principal e em preto o resultado do stream lookup após a comparação entre as duas fontes.

EXECUTANDO A TRANSFORMAÇÃO

Antes de executar a transformação quero mostrar os dados de cada origem para termos ideia de como será a comparação.

STREAM PRINCIPAL

Agora, veja os dados que estão sendo consumidos pelo arquivo de txt.

STREAM SECUNDÁRIA – TXT

A coluna validator não tem muita serventia aqui, e fiz algumas alterações no arquivo de texto para o exemplo.

Visto como as duas fontes estão ‘configuradas’, vamos executar a transformação e dar um preview no lookup step.

COMPARAÇÃO NO STEP DE LOOKUP

A caixa azul destaca a stream que foi originada no arquivo txt e a vermelha que veio do write to log. Quando o stream lookup opera, e por ter sido configurado para comparar apenas os id’s, o que temos como resultado são as três primeiras linhas do write to log.

Veja como o Pentaho escreveu o resultado no arquivo de texto criado como output final.

RESULTADO FINAL EM VERMELHO

Como as três linhas finais não possuem correspondência, a operação descarta aqueles valores excluindo-os do arquivo final.

Este foi mais um post tutorial sobre a função de lookup que o Pentaho possui. Esta função pode ajudar muito a identificar registros que não possuem correspondência ou inconsistência em dados com maior agilidade e confiança.

Não se esqueça que podemos utilizar o campo ‘validator’ como comparação. Aquele campo criado na task do checksum!!

Link para baixar os arquivos. Irei deixar do post anterior junto.

Espero que gostem, saúde!