Veja como tratar campos de CPF ou qualquer outro tipo, que esteja em sequência e sem o dígito separador.

INTRODUÇÃO

Estes dias recebi a seguinte dúvida no meu blog:

“Tenho uma coluna com 7 números e quero dividi-la em 2 colunas, uma com os 6 primeiros números e a outra somente com o último número. nesse caso não tem delimitador, como faço?”

Fiquei pensando em uma forma de resolver a questão e bem, cheguei em uma solução simples que pode ajudar e decidi documentar a questão aqui no blog.

CENÁRIO

Suponha que na sua aplicação o cadastro do CPF não possua o separador para o dígito verificador e você e sua organização precisam tratar esse pequeno problema. Sabendo que o CPF possui 11 dígitos mais o separador.

A solução que pensei foi a seguinte, acompanhe:

TRANSFORMAÇÃO COM PENTAHO

Primeiro passo foi criar um “data dummy” de exemplo para materializar o caso. Utilizando o step Data Grid, configurei da seguinte forma:

Criação de dados básicos com o Data Grid: Configurando a coluna.
Criação de dados básicos com o Data Grid: Configurando a coluna

Criando os dados no possível formato do CPF.

Alimentando o step com as informações despadronizadas.
Alimentando o step com as informações despadronizadas.

Agora você vai precisar converter para o formato string, caso não esteja. Para isso, utilize o Select Values na aba de Metadata e transforme o campo em questão.

Configurando o campo com o Select Values: Transformando em String.
Configurando o campo com o Select Values: Transformando em String.

Configurado o novo formato do campo CPF, avançamos para a operação de separação dos caracteres.

A operação é dividida em dois passos:

  • Separar os 9 primeiros dígitos do campo;
  • Separar o dígito verificador do CPF.

Pensando nas opções que o Pentaho oferece, a que melhor se enquadrou nesta solução foi uma bem simples chamada String Cut.

Nela, crio dois campos, sendo o primeiro começando de 0 até o 9º dígito, e o segundo, do 9º até o final.

NOTA: Como a ferramenta é construída em JAVA, o string inicial possui o index 0. Muita atenção nesta questão.

Veja abaixo, como ficou a configuração do step String cut.

Passando os campos para o String cut separar os valores desejados.
Passando os campos para o String cut separar os valores desejados.

Utilizando o Preview Data para analisar o resultado, veja como ficou a transformação.

Resultado prévio da operação de String cut na transformação.
Resultado prévio da operação de String cut na transformação.

Como último passo da transformação, o que devemos fazer é juntar os campos. Para essa etapa, utilize o Concat Field passando o separador que desejar.

Unindo os campos com a transformação Concat field. Configuração devidamente criada.
Unindo os campos com a transformação Concat field. Configuração devidamente criada.

Transformação finalizada e campos devidamente tratados.

Resultado da transformação Concat fields. Campos normalizados.
Resultado da transformação Concat fields. Campos normalizados.

Ao final, toda o tratamento ficou da seguinte forma.

ETL no Pentaho finalizado. Resultado final.
ETL no Pentaho finalizado. Resultado final.

CONCLUSÃO

Essa foi a solução que encontrei para paliar o problema de forma temporária e manter o ETL funcionando.

Claro que existem formas mais elegantes e sofisticadas de solução, mas por falta de tempo, ficará para um outro post.

Para a semana, irei trazer uma solução para tratar CNPJ, caso se deparem com o mesmo problema, e documento aqui no blog.

Espero que possa ajudar! Obrigado!

Faça o download da transformação AQUI.

OLÁ!

Se chegou até aqui e gostou do pequeno tutorial, deixe seu like e 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 REDES SOCIAIS!

Obrigado e volte sempre!