Validar CPF em um pipeline de dados ETL é essencial para garantir a integridade e a qualidade das informações antes que sejam processadas e armazenadas. O método mais eficaz combina um algoritmo matemático preciso com a automação via script, eliminando erros manuais e assegurando consistência em grandes volumes de dados.
O algoritmo de validação de CPF verifica os dois dígitos verificadores calculados a partir dos nove primeiros dígitos. O script a seguir automatiza este processo e pode ser integrado facilmente em qualquer pipeline ETL.
def validar_cpf(cpf):
# Remover caracteres não numéricos
cpf = ''.join(filter(str.isdigit, cpf))
# Verificar se o CPF tem 11 dígitos
if len(cpf) != 11:
return False
# Verificar se todos os dígitos são iguais
if cpf == cpf[0] * 11:
return False
# Calcular o primeiro dígito verificador
soma = sum(int(digit) * (10 - i) for i, digit in enumerate(cpf[:9]))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Calcular o segundo dígito verificador
soma = sum(int(digit) * (11 - i) for i, digit in enumerate(cpf[:10]))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
# Comparar os dígitos calculados com os informados
return digito1 == int(cpf[9]) and digito2 == int(cpf[10])
# Exemplo de uso
cpf_teste = '123.456.789-09'
if validar_cpf(cpf_teste):
print(f'{cpf_teste} é um CPF válido')
else:
print(f'{cpf_teste} é um CPF inválido')
Para integrar a validação em um pipeline ETL, você pode ler os dados de origem, aplicar a função de validação e filtrar ou marcar os registros inválidos. O exemplo a seguir demonstra como processar um arquivo CSV.
import pandas as pd
def processar_arquivo_csv(arquivo_entrada, arquivo_saida):
# Ler o arquivo CSV
df = pd.read_csv(arquivo_entrada)
# Aplicar a validação de CPF
df['cpf_valido'] = df['cpf'].apply(validar_cpf)
# Salvar o resultado em um novo arquivo CSV
df.to_csv(arquivo_saida, index=False)
# Exemplo de uso
processar_arquivo_csv('dados_originais.csv', 'dados_validados.csv')
| CPF (Entrada) | Válido? |
|---|---|
| 123.456.789-09 | Não |
| 529.982.247-25 | Sim |
| 111.111.111-11 | Não |
| 369.742.258-49 | Sim |
Com este método, você automatiza a validação de CPF em segundos, evitando erros manuais e garantindo que apenas dados limpos e confiáveis sigam para as próximas etapas do seu pipeline ETL.