P A T H

Como validar CPF e CNPJ no Tableau Prep

O que você vai aprender?

Nesta dica, você vai aprender a recuperar os zeros à esquerda que se perdem em CPFs e CNPJs e a calcular os dígitos verificadores de cada documento diretamente no Tableau Prep, classificando cada registro como válido ou inválido. E o melhor: a validação de CNPJ já está preparada para o novo CNPJ alfanumérico.

Introdução

CPF e CNPJ são chaves de cadastro em praticamente toda base de clientes, fornecedores ou parceiros. Mesmo assim, é muito comum recebermos esses campos com problemas: alguns vêm com pontuação e outros sem, alguns tem espaços extras, outros perderam os zeros à esquerda porque a planilha tratou o documento como número, e há ainda documentos digitados errado. Um CPF “00123456789” que virou “123456789” no Excel deixa de cruzar com o mesmo cliente em outra base, gera duplicidade e quebra joins.

Além disso, desde julho de 2026 a Receita Federal passou a emitir CNPJs alfanuméricos para novas inscrições. Os CNPJs já existentes continuam válidos e numéricos, mas as novas empresas podem receber identificadores com letras, como 12.ABC.345/01DE-35. Na prática, isso muda três coisas importantes para quem prepara dados:

  • O campo de CNPJ precisa ser texto. Qualquer etapa que converta o CNPJ para número vai gerar erro ou valores nulos nos novos cadastros.
  • A limpeza não pode mais remover tudo que não for número: ela precisa manter as letras.
  • O cálculo do dígito verificador muda: cada caractere passa a valer o seu código ASCII menos 48. Para os números nada muda (o caractere “0” vale 0, o “9” vale 9), mas as letras ganham valores próprios (“A” vale 17, “B” vale 18 e assim por diante, até “Z”, que vale 42).

O novo CNPJ continua com 14 posições: as 8 primeiras (raiz) e as 4 seguintes (ordem do estabelecimento) podem ser letras ou números, e as 2 últimas, que são os dígitos verificadores, continuam sempre numéricas. A tabela abaixo mostra alguns exemplos da conversão de caracteres usada no cálculo:

Caractere

Código ASCII

Valor no cálculo

0

48

0

5

53

5

9

57

9

A

65

17

B

66

18

C

67

19

Z

90

42

 

Para esta dica, vamos utilizar a base fictícia Base_Dica_Tableau_Prep_CPF_CNPJ.xlsx, que possui duas abas: Clientes, com ID, nome e CPF de pessoas físicas, e Fornecedores, com ID, razão social e CNPJ de empresas, incluindo CNPJs numéricos e alfanuméricos. Os documentos foram gerados aleatoriamente apenas para teste e trazem, de propósito, os problemas mais comuns: pontuação, espaços, zeros perdidos, letras minúsculas, dígitos repetidos e dígitos verificadores errados.

Passo 1: Conectando a base e garantindo que os documentos sejam texto

Vamos criar uma conexão com o arquivo Excel e arrastar a aba Clientes para o fluxo. Na etapa de Entrada, localize o campo CPF e clique no ícone do tipo de dado. Caso ele esteja como número (#), altere para Cadeia de caracteres (Abc). Faça o mesmo com o campo CNPJ quando trouxermos a aba Fornecedores.

Atenção: se ao converter você perceber valores terminando em “.0” (por exemplo, “1417075341.0”), significa que o Prep leu o campo como decimal. Nesse caso, converta primeiro para Número (inteiro) e só depois para Cadeia de caracteres, para que o “.0” não seja interpretado como um dígito a mais nos próximos passos.

Em seguida, clique no + ao lado da Entrada e adicione uma etapa de Limpeza. Todos os cálculos do CPF serão feitos nela.

Exemplo 1 – Validando o CPF

Passo 2: Removendo pontuação e espaços

Vamos criar um campo calculado. Para isso, clique nos três pontinhos (…) da coluna CPF, selecione Criar campo calculado > Cálculo personalizado, dê o nome CPF Limpo e escreva a fórmula abaixo. Ela mantém somente os números, eliminando pontos, traços, barras e espaços:

REGEXP_REPLACE([CPF], ‘[^0-9]’, ‘)

Passo 3: Recuperando os zeros à esquerda 

Todo CPF tem 11 dígitos. Se o campo limpo tiver menos que isso, é sinal de que os zeros à esquerda se perderam. A técnica é simples: concatenamos onze zeros na frente do valor e pegamos apenas os 11 últimos caracteres com a função RIGHT. Crie um campo calculado chamado CPF Padronizado:

IF LEN([CPF Limpo]) <= 11

THEN RIGHT(‘00000000000’ + [CPF Limpo], 11)

ELSE [CPF Limpo]

END

Repare que só completamos com zeros quando o valor tem até 11 caracteres. Se ele tiver mais, mantemos o valor como está, para que o erro apareça na validação em vez de ser “cortado” silenciosamente pela função RIGHT. Na nossa base, a cliente Carla tinha o CPF “1417075341” (10 dígitos) e passou a ter “01417075341”.

Passo 4: Calculando os dígitos verificadores do CPF

Os dois últimos números do CPF são dígitos verificadores, calculados a partir dos anteriores. O primeiro dígito usa os 9 primeiros números multiplicados pelos pesos de 10 até 2. Somamos tudo, calculamos o resto da divisão por 11 e aplicamos a regra: se o resto for menor que 2, o dígito é 0; caso contrário, o dígito é 11 menos o resto. Mas relaxa, não precisa quebrar a cabeça pensando na fórmula, tem tudo pronto aqui embaixo.

Crie um campo calculado chamado CPF Soma DV1:

INT(MID([CPF Padronizado], 1, 1)) * 10 +

INT(MID([CPF Padronizado], 2, 1)) * 9 +

INT(MID([CPF Padronizado], 3, 1)) * 8 +

INT(MID([CPF Padronizado], 4, 1)) * 7 +

INT(MID([CPF Padronizado], 5, 1)) * 6 +

INT(MID([CPF Padronizado], 6, 1)) * 5 +

INT(MID([CPF Padronizado], 7, 1)) * 4 +

INT(MID([CPF Padronizado], 8, 1)) * 3 +

INT(MID([CPF Padronizado], 9, 1)) * 2

E, em seguida, o campo CPF DV1, que aplica a regra do resto da divisão por 11:

IF ([CPF Soma DV1] % 11) < 2 THEN 0

ELSE 11 – ([CPF Soma DV1] % 11)

END

O segundo dígito segue a mesma lógica, mas usa os 10 primeiros números (incluindo o primeiro dígito verificador) com pesos de 11 até 2. Crie o campo CPF Soma DV2:

INT(MID([CPF Padronizado], 1, 1)) * 11 +

INT(MID([CPF Padronizado], 2, 1)) * 10 +

INT(MID([CPF Padronizado], 3, 1)) * 9 +

INT(MID([CPF Padronizado], 4, 1)) * 8 +

INT(MID([CPF Padronizado], 5, 1)) * 7 +

INT(MID([CPF Padronizado], 6, 1)) * 6 +

INT(MID([CPF Padronizado], 7, 1)) * 5 +

INT(MID([CPF Padronizado], 8, 1)) * 4 +

INT(MID([CPF Padronizado], 9, 1)) * 3 +

INT(MID([CPF Padronizado], 10, 1)) * 2

E o campo CPF DV2:

IF ([CPF Soma DV2] % 11) < 2 THEN 0

ELSE 11 – ([CPF Soma DV2] % 11)

END

Passo 5: Classificando o status do CPF

Agora juntamos tudo em um único campo que explica o motivo de cada CPF ser válido ou inválido. Crie o campo calculado CPF Status:

IF ISNULL([CPF Limpo]) OR [CPF Limpo] = ” THEN ‘Ausente’

ELSEIF LEN([CPF Padronizado]) <> 11 THEN ‘Tamanho inválido’

ELSEIF REPLACE([CPF Padronizado], LEFT([CPF Padronizado], 1), ”) = ”

     THEN ‘Dígitos repetidos’

ELSEIF STR([CPF DV1]) + STR([CPF DV2]) = RIGHT([CPF Padronizado], 2)

     THEN ‘Válido’

ELSE ‘Dígito verificador inválido’

END

Um detalhe importante: CPFs com todos os números iguais, como “111.111.111-11”, passam no cálculo do dígito verificador, mas não são válidos. Para identificá-los, usamos um truque simples: removemos do texto todas as ocorrências do primeiro caractere com a função REPLACE. Se não sobrar nada, é porque todos os caracteres eram iguais.

Exemplo 2 – Validando o CNPJ (numérico e alfanumérico)
Para esse exemplo vamos utilizar a seguinte base de dados

Passo 6: Limpando e padronizando o CNPJ sem perder as letras

Adicione a aba Fornecedores ao fluxo, confirme que o campo CNPJ está como Cadeia de caracteres (como no Passo 1) e inclua uma nova etapa de Limpeza. Aqui está a primeira diferença em relação ao CPF: a limpeza precisa manter letras e números. Também convertemos tudo para maiúsculas com a função UPPER, já que o padrão da Receita utiliza letras maiúsculas e é comum que o valor seja digitado em minúsculas.

Crie o campo calculado CNPJ Limpo:

 

REGEXP_REPLACE(UPPER([CNPJ]), ‘[^0-9A-Z]’, ”)

 

E o campo CNPJ Padronizado, que completa os zeros à esquerda até 14 posições:

 

IF LEN([CNPJ Limpo]) <= 14

THEN RIGHT(‘00000000000000’ + [CNPJ Limpo], 14)

ELSE [CNPJ Limpo]

END

 

Na base de exemplo, o fornecedor Épsilon, que estava salvo como o número “440029000194”, passou a ter o CNPJ “00440029000194”, e o fornecedor Delta, digitado em minúsculas, foi padronizado para

“E7WXGSKZXSUC24”.

Passo 7: Calculando os dígitos verificadores com o código ASCII

Se usássemos a função INT para transformar cada caractere em número, como fizemos com o CPF, os CNPJs com letras retornariam valores nulos, porque INT(‘A’) não é um número. Por isso, vamos usar a função ASCII, que retorna o código de cada caractere, e subtrair 48. Essa conta funciona tanto para os CNPJs antigos quanto para os novos, então não precisamos de dois cálculos diferentes.

O primeiro dígito verificador usa os 12 primeiros caracteres com os pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. Crie o campo CNPJ Soma DV1:

(ASCII(MID([CNPJ Padronizado], 1, 1)) – 48) * 5 +

(ASCII(MID([CNPJ Padronizado], 2, 1)) – 48) * 4 +

(ASCII(MID([CNPJ Padronizado], 3, 1)) – 48) * 3 +

(ASCII(MID([CNPJ Padronizado], 4, 1)) – 48) * 2 +

(ASCII(MID([CNPJ Padronizado], 5, 1)) – 48) * 9 +

(ASCII(MID([CNPJ Padronizado], 6, 1)) – 48) * 8 +

(ASCII(MID([CNPJ Padronizado], 7, 1)) – 48) * 7 +

(ASCII(MID([CNPJ Padronizado], 8, 1)) – 48) * 6 +

(ASCII(MID([CNPJ Padronizado], 9, 1)) – 48) * 5 +

(ASCII(MID([CNPJ Padronizado], 10, 1)) – 48) * 4 +

(ASCII(MID([CNPJ Padronizado], 11, 1)) – 48) * 3 +

(ASCII(MID([CNPJ Padronizado], 12, 1)) – 48) * 2

E o campo CNPJ DV1, com a mesma regra do resto da divisão por 11:

IF ([CNPJ Soma DV1] % 11) < 2 THEN 0

ELSE 11 – ([CNPJ Soma DV1] % 11)

END

Para o segundo dígito, usamos os 13 primeiros caracteres com os pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. Crie o campo CNPJ Soma DV2:

(ASCII(MID([CNPJ Padronizado], 1, 1)) – 48) * 6 +

(ASCII(MID([CNPJ Padronizado], 2, 1)) – 48) * 5 +

(ASCII(MID([CNPJ Padronizado], 3, 1)) – 48) * 4 +

(ASCII(MID([CNPJ Padronizado], 4, 1)) – 48) * 3 +

(ASCII(MID([CNPJ Padronizado], 5, 1)) – 48) * 2 +

(ASCII(MID([CNPJ Padronizado], 6, 1)) – 48) * 9 +

(ASCII(MID([CNPJ Padronizado], 7, 1)) – 48) * 8 +

(ASCII(MID([CNPJ Padronizado], 8, 1)) – 48) * 7 +

(ASCII(MID([CNPJ Padronizado], 9, 1)) – 48) * 6 +

(ASCII(MID([CNPJ Padronizado], 10, 1)) – 48) * 5 +

(ASCII(MID([CNPJ Padronizado], 11, 1)) – 48) * 4 +

(ASCII(MID([CNPJ Padronizado], 12, 1)) – 48) * 3 +

(ASCII(MID([CNPJ Padronizado], 13, 1)) – 48) * 2

E o campo CNPJ DV2:

IF ([CNPJ Soma DV2] % 11) < 2 THEN 0

ELSE 11 – ([CNPJ Soma DV2] % 11)

END

Para conferir se a conta está correta, vamos olhar a matemática por trás de outra forma, veja o exemplo do CNPJ alfanumérico 12.ABC.345/01DE-35. Convertendo os 12 primeiros caracteres e multiplicando pelos pesos, temos:

 

Caractere

1

2

A

B

C

3

4

5

0

1

D

E

Valor

1

2

17

18

19

3

4

5

0

1

20

21

Peso

5

4

3

2

9

8

7

6

5

4

3

2

Resultado

5

8

51

36

171

24

28

30

0

4

60

42

 

A soma é 459, e o resto da divisão de 459 por 11 é 8. Como 8 não é menor que 2, o primeiro dígito é 11 − 8 = 3. Repetindo o processo com os 13 primeiros caracteres (agora incluindo o 3), a soma é 424, o resto é 6 e o segundo dígito é 11 − 6 = 5. Ou seja, os dígitos verificadores são 35, exatamente os dois últimos números do CNPJ.

 

Passo 8: Classificando o status do CNPJ

 

Assim como fizemos com o CPF, vamos criar o campo calculado CNPJ Status. A novidade aqui é a regra de formato: as 12 primeiras posições podem ter letras ou números, mas as 2 últimas precisam ser números. Usamos a função REGEXP_MATCH para verificar isso:

 

IF ISNULL([CNPJ Limpo]) OR [CNPJ Limpo] = ” THEN ‘Ausente’

ELSEIF LEN([CNPJ Padronizado]) <> 14 THEN ‘Tamanho inválido’

ELSEIF NOT REGEXP_MATCH([CNPJ Padronizado], ‘^[0-9A-Z]{12}[0-9]{2}$’)

     THEN ‘Formato inválido’

ELSEIF REPLACE([CNPJ Padronizado], LEFT([CNPJ Padronizado], 1), ”) = ”

     THEN ‘Caracteres repetidos’

ELSEIF STR([CNPJ DV1]) + STR([CNPJ DV2]) = RIGHT([CNPJ Padronizado], 2)

     THEN ‘Válido’

ELSE ‘Dígito verificador inválido’

END

 

Na nossa base, o fornecedor “Eta” tem uma letra na posição do dígito verificador (“ZY.U2J.LW6/VZGV-1X”) e foi classificado como Formato inválido, enquanto o fornecedor Teta, com “00.000.000/0000-00”, foi classificado como Caracteres repetidos.

Ao final do fluxo, cada CPF e cada CNPJ está padronizado, com os zeros à esquerda recuperados, e classificado com um status que explica exatamente o que está errado em cada registro. Na base de exemplo, 5 dos 9 CPFs e 6 dos 9 CNPJs foram confirmados como válidos, incluindo os CNPJs alfanuméricos, e os demais foram separados para correção.

01 de Outubro de 2026

Pronto! Agora você já sabe como validar CPF e CNPJ no Tableau Prep, inclusive o novo CNPJ alfanumérico!

Language