◇ OpenCyber Academy
Profissionalizante · Capítulo 6 · Português

Capítulo 6 — Qualidade de dados na prática

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 6 — Qualidade de dados na prática

Mapa da aula

Aula 06 publicada. Mapa, exemplo, EX026.

flowchart TD
  N0["6.1 Doadores duplicados"]
  N1["6.2 Resultados"]
  N2["6.3 Corrigindo e prevenindo"]
  N3["6.4 Hábitos de qualidade"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX026"]

Desenho lógico

flowchart LR
  N0["6.1 Doadores duplicados"]
  N1["6.2 Resultados"]
  N2["6.3 Corrigindo e prevenindo"]
  N3["6.4 Hábitos de qualidade"]
  N0 --> N1 --> N2 --> N3 --> Q["EX026"]
[6.1 Doadores duplicados]
    |
    v
[6.2 Resultados]
    |
    v
[6.3 Corrigindo e prevenindo]
    |
    v
[6.4 Hábitos de qualidade]
    |
    v
[Exemplo resolvido] --> [Exercício EX026]

Objetivos de aprendizagem

Você vai (1) encontrar registros duplicados de doadores; (2) normalizar campos simples; (3) criar hábitos de qualidade para uma equipe pequena.

6.1 Doadores duplicados

A gerente de captação conta que alguns doadores recebem duas cópias de cada boletim e reclamam. Grace suspeita de endereços de e-mail duplicados, digitados de maneiras diferentes. Ela exporta e-mails sintéticos de doadores e verifica quantos são, na verdade, o mesmo endereço escrito de outro jeito, com letras maiúsculas ou espaços a mais. Explica que as duplicatas desperdiçam dinheiro, irritam os doadores e fazem parecer que a Northbank tem mais apoiadores do que realmente tem. A gerente de captação concorda em exportar a lista de e-mails dos doadores e conferi-la com a ajuda de Grace.

"""Count duplicate synthetic donor emails before and after normalising case and spaces (stdlib only)."""
import random
random.seed(2)
base = [f"donor{i}@example.org" for i in range(1500)]
emails = []
for e in base:
    emails.append(e)
    if random.random() < 0.08: emails.append(e.upper())
    if random.random() < 0.05: emails.append(" " + e + " ")
print(f"records {len(emails)}; distinct as written {len(set(emails))}; distinct normalised {len({e.strip().lower() for e in emails})}")
print(f"duplicate records found by normalising {len(emails) - len({e.strip().lower() for e in emails})}")

Execute com python3 lab_emails.py. Saída verificada:

records 1684; distinct as written 1684; distinct normalised 1500
duplicate records found by normalising 184

6.2 Resultados

O laboratório confere 1.684 registros sintéticos de e-mail. Como foram escritos, os 1.684 são todos distintos, de modo que uma verificação simples de duplicatas não encontra nada. Depois de converter para minúsculas e remover os espaços das pontas, restam apenas 1.500 endereços distintos. A normalização revela 184 registros duplicados. Grace observa que as duplicatas eram invisíveis até a normalização, e por isso os boletins saíam em dobro sem que ninguém entendesse o motivo. Ela explica a constatação à gerente de captação com três exemplos do mesmo endereço escrito de formas diferentes, o que torna o problema fácil de entender sem conhecimento técnico.

6.3 Corrigindo e prevenindo

A gerente de captação funde os doadores duplicados no banco de dados, mantendo o histórico completo de doações em um único registro. Grace pergunta ao fornecedor do banco de dados se os e-mails podem ser guardados automaticamente em minúsculas, e ele confirma que sim. Ela também pede à equipe que procure o doador antes de cadastrar um novo. O Sr. Nowak observa que é preciso corrigir as duplicatas existentes e também prevenir as novas, senão o problema volta. Depois das mudanças, as reclamações sobre boletins em dobro param, e a gerente de captação apresenta ao conselho uma contagem mais exata de apoiadores.

6.4 Hábitos de qualidade

Grace cria hábitos simples: uma verificação mensal de duplicatas, uma verificação trimestral de CEPs ausentes e uma verificação anual de que a definição de família é usada de forma consistente. Cada verificação tem um dono e leva menos de uma hora. Ela registra os resultados em um log curto. Observa que verificações pequenas e regulares combinam melhor com uma organização de equipe reduzida do que grandes mutirões de limpeza que competem com o trabalho diário. O log é revisado em cada reunião mensal dos líderes, para que os problemas sejam percebidos cedo e os donos vejam que suas verificações fazem diferença.

Exemplo resolvido

Grace encontra 184 e-mails de doadores duplicados, invisíveis até que 1.684 registros fossem normalizados em 1.500 endereços, funde-os mantendo o histórico de doações, ativa o armazenamento em minúsculas e a busca antes do cadastro e cria verificações mensais.

Caso sintético. Os e-mails são sintéticos; as saídas vêm de lab_emails.py.

Erros e limites

Verificações de duplicatas por correspondência exata deixam passar diferenças de maiúsculas e espaços.

Exercícios

Continue estudando — aula 06 (capítulo 06 de 12)

← Capítulo 05 · Índice das aulas · Capítulo 07 →

Continue para a próxima aula já escrita.