flysmog.pages.dev

Como validar CPF em pipeline de dados ETL?

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.

Pré-requisitos

Implementando a validação de CPF em Python

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

Integrando a validação em um pipeline ETL

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

Exemplo Prático

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

Conclusão

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.