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:

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:

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

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

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.

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.

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

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.

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).

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).

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

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. 

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!

Espero que tenham gostado, saúde!

Baixe aqui os arquivos.