Olá pessoal, beleza?

já sabem como tratar null no Pentaho? 

Neste post quero mostrar para vocês quais steps podem lidar com valores nulos em uma stream de dados de qualquer fonte.

Configuração para o exemplo:

Estrutura da transformação completa.
Estrutura da transformação completa.

Vamos ver dois steps aqui: 

  • Null IF;
  • If field value is null. 

Iremos começar com null if para depois, avançarmos para o ‘tratamento’.

NULL IF

Null if é um tipo de step que dado um determinado valor em uma coluna, quando encontrado, será transformado em null pelo Pentaho.

Por exemplo, na fonte da tabela de produtos que estou utilizando, irei transformar todos os produtos da cor preta em nulls, veja:

Coluna que irei operar e transformar os valores em NULL.
Coluna que irei operar e transformar os valores em NULL.

Veja antes que na fonte, temos alguns produtos com a cor preta cadastrados.

Verificando as cores da tabela.
Verificando as cores da tabela.

Executando essa primeira parte da transformação destinando ao dummy, veja o resultado. 

Transformando as linhas com cor "Black" em NULLS.
Transformando as linhas com cor “Black” em NULLS.

Os mesmos registros agora possuem o valor null, conforme atribuímos no step.

Uma vez que tornamos nulos algumas cores de produto, podemos substituir o valor por null por outro qualquer utilizando o step if field value is null.

Aqui, há três formas de tratar: 

  • Select fields; 
  • Select value type;
  • Replace null for all fields.
Alterando um registro NULL para um valor customizável.
Alterando um registro NULL para um valor customizável.

Primeiro vamos utilizar a configuração replace null for all fields. Como o próprio nome diz, iremos apenas atribuir um valor e executar a transformação. 

O step aplica para todas as colunas inclusive para datas, numéricos e textos.

Aplicando o valor de alteração.
Aplicando o valor de alteração.

Após aplicação da configuração’ todos os nulos, independentemente da coluna, passarão a receber ‘não aplicável‘ em seus valores.

Alterando os registros NULL para "Não Aplicável".
Alterando os registros NULL para “Não Aplicável”.

NOTA: Não marque a caixa de diálogo set empty string pois irá ignorar a configuração da coluna.

O mais interessante deste step é poder criar uma configuração por data type, como podemos ver quando marcamos a caixa de diálogo select value type

Ao habilitar essa opção, estamos determinando que toda coluna do tipo string que vier na stream do Pentaho com algum registro null, receberá um valor pré-configurado.

Veja no meu exemplo, como configurei meu step.

Customizando para cada tipo de dado.
Customizando para cada tipo de dado.

Uma dica: dependendo do tipo de controle que seja feito nas suas tabelas de data, é possível facilitar o processo criando uma data ‘irreal’ (como fiz) e atribuindo nas colunas quando não houver registro. 

Isso é muito utilizado por exemplo, quando temos controle de mudança em alguma dimensão, onde o primeiro insert para não ter null, tem essa data (2100/12/31).

Valores alterados
Valores alterados

Antes de executar o step para mostrar o resultado da configuração aplicada, alterei o metadata das colunas weight (number: 5,2) e sellenddate (date: YYYY/MM/DD HH:MM:SS).

Modificando a estrutura para alterar o NULL.
Modificando a estrutura para alterar o NULL.

Veja o resultado da execução da transformação abaixo:

Resultado da substituição dos NULLS por outro valor.
Resultado da substituição dos NULLS por outro valor.

Para fechar o ‘tratamento’ de nulls em ETL, temos a última configuração que se aplica para as colunas em si, e aqui, não considera o data type, mas a coluna no geral. Claro, se atente para não tomar erro de conversão ou incompatibilidade entre os tipos. 

Aplicando as mudanças por coluna.
Aplicando as mudanças por coluna.

O resultado não irá mudar muito do exemplo anterior já que utilizei as mesmas colunas. A única percepção que devemos ter nesse tipo de configuração, é que se aplicará apenas nas colunas destacadas e não na streaming como um todo. 

Se desejar configurar todas as colunas, basta clicar em get fields e aplicar em cada uma delas.

CONCLUSÃO

Este foi um post bem completo sobre nulls em uma streaming de dados no Pentaho.

Abordei todas as possibilidades de tratamento e configuração que o step da ferramenta permite, assim como possíveis gaps.

Existem outras formas de se lidar com nulls e ai, teria que avaliar o cenário e a particularidade do ambiente, porém, neste post, temos um panorama geral do que a ferramenta permite criar!

OLÁ!

Se chegou até aqui e gostou do pequeno tutorial, deixe seu like compartilhe. Ajude o blog a alcançar mais pessoas!

Caso queira receber em primeira mão esse tipo de conteúdo, se inscreva abaixo:

SIGA NAS REDE SOCIAIS:

Espero que tenham gostado, saúde!

Baixe aqui os arquivos.