Review do livro Fundamentos de Qualidade de Dados (Parte 1)

Esse artigo é para desvendarmos conceitos importantes de Qualidade de Dados, utilizando como referência os cinco primeiros capítulos do livro da O’Reilly.

Primeiro de tudo, quem tá vivo sempre aparece, né?

Depois de um tempo offline, decidi trazer uma nova série de artigos, falando sobre livros técnicos que já li ou que estou lendo no momento presente. A ideia é sintetizar aprendizados, mas quem sabe te incentivar a embarcar na jornada da leitura de algum livro que talvez estejas curioso(a) para adquirir (rs).

Recentemente, iniciei a leitura do livro “Fundamentos de Qualidade de Dados” da O’Reilly e tem sido tão fluida e interessante, que decidi compartilhar meus aprendizados. O livro é um guia prático e abrangente sobre como construir sistemas de dados confiáveis.

Neste primeiro artigo, vamos explorar as ideias centrais dos cinco primeiros capítulos, que formam a base para qualquer iniciativa séria de qualidade de dados.

Vamos juntos?

Por que a Qualidade de Dados Merece Atenção Imediata

O ponto de partida não poderia ser outro: o porquê. Muitas vezes, a qualidade de dados é tratada como uma tarefa secundária, um problema para “resolver depois”.

Sinceramente, quem nunca passou por algum problema de um dashboard com números estranhos, um pipeline que falhou em atualizar ou até mesmo, problemas mais operacionais, como falta de acesso a um sistema? Isso a gente sempre vai se deparar na nossa área, ainda mais considerando que estamos vivendo uma época de aumento de complexidade em nossos sistemas, volumetria de dados absurda e por aí vai.

Mas um ponto a salientar, dados de baixa qualidade não geram apenas relatórios errados. Eles levam a decisões de negócio equivocadas, minam a confiança dos stakeholders na equipe de dados, criam retrabalho constante para engenheiros e analistas e, no limite, podem causar perdas financeiras e de reputação. O capítulo deixa claro que investir em qualidade de dados não é um custo, mas uma alavanca para a eficiência e a inovação.

Reunindo os Componentes Essenciais de um Sistema Confiável de Dados

Com o “porquê” estabelecido, o livro avança para o “o quê”. Um sistema de dados confiável não se resume a ferramentas, até porque isso pode ser flexibilizado. É muito comum você trabalhar em uma área de Dados que utiliza mais de uma ferramenta, como forma de descentralizar e como forma de customizar soluções mesmo.

O sistema de dados confiável é sustentado por três pontos essenciais:

  1. Pessoas: É crucial definir papéis e responsabilidades. Quem são os “donos” dos dados ? Quem são os responsáveis pela sua gestão diária ? Criar uma cultura de colaboração entre quem produz o dado e quem o consome é fundamental.
  2. Processos: Como os problemas de dados são identificados, comunicados e resolvidos? Ter um fluxo de trabalho claro para incidentes de dados evita o caos e garante que os problemas sejam resolvidos de forma estruturada.
  3. Tecnologia: As ferramentas que automatizam a detecção de problemas, monitoram a saúde dos pipelines e fornecem visibilidade sobre a qualidade dos dados em toda a organização.

Além disso, o livro também aborda como coletar métricas de qualidade de dados. Essas métricas são indicativas da saúde dos dados que estaremos lidado, ou seja, irão indicar se estão atualizados, completos, com esquema correto e etc.

O livro sugere que para aplicar essa abordagem, em um nível generalista, usemos os metadados ao nosso favor. Nesse cenário, acessar a logs de queries, verificar tamanho dos nosso objetos de dados, tempo de processamento, usuários que possuem acesso, últimas modificações realizadas, entre outras informações.

A partir disso, algo que é enfatizado é a importância de se ter um Catálogo de Dados e como isso conecta com o usuário do dado e com quem é o “dono”. Spoiler alert: em outro momento iremos aprofundar sobre isso.

Coletando, Limpando, Transformando e Testando os Dados

Aqui entramos no trabalho do dia a dia do pipeline de dados. O capítulo mergulha no ciclo de vida dos dados, enfatizando que a qualidade deve ser uma preocupação em cada etapa:

  • Coleta: A qualidade começa na fonte. É vital entender e validar os dados no momento em que são ingeridos.
  • Limpeza e Transformação: O livro aborda técnicas para lidar com valores nulos, formatos inconsistentes e padronização.
  • Testes: Este é um ponto crucial. Assim como testamos software, precisamos testar nossos dados. Testes de unidade, integração e regressão em pipelines de dados não são um luxo, mas uma necessidade para garantir que as transformações estão corretas e que novas mudanças não quebrem o que já funcionava.

Algumas considerações importantes a serem comentadas, giram em torno da limpeza de dados. Cada técnica de limpeza apresentada é abordada com uma sugestão do que pode ser feito para garantir técnicas que validem a qualidade do que está sendo feito.

Abaixo eu trouxe um resumo disso em formato de tabela, apenas para te guiar de forma mais direta possível:

Fonte: Autor (2025).

Esse capítulo também aborda muitos outros aspectos interessantes desse ciclo de vida de engenharia de dados e alguns exemplos práticos de como fazer certas implementações em algumas plataformas, como o Apache Airflow.

Monitoramento e Detecção de Anomalias para Pipelines de Dados

Se o capítulo 3 foi sobre construir certo, o capítulo 4 é sobre como garantir que tudo continue funcionando certo.

O monitoramento contínuo é a resposta.

A ideia é observar o comportamento dos dados e dos pipelines para detectar desvios do padrão (anomalias). Em uma perspectiva mais amplas, o livro indica que podemos cair em dois tipos de problema:

  • Problemas possíveis de predizer: quantidade de valores null, por exemplo.
  • Problemas que não são possíveis de predizer: mudança de estrutura de um JSON, por exemplo.

Em toda a abordagem, permanece a reflexão de que o ideal para lidar com um problema, especialmente o que pode ser previsto, é identificar padrões de comportamento. A exemplo, se conseguirmos entender quais são os valores esperados dos nossos dados, provavelmente é possível dizer com que frequência eles são null e se eventualmente eu estou dentro desse intervalo “normal” ou não.

Em uma perspectiva mais específica sobre tipos de anomalias que podemos encontrar, temos:

  • Anomalias de volume: O número de linhas recebidas subiu ou caiu drasticamente?
  • Anomalias de distribuição: A média ou o desvio padrão de um campo numérico mudou subitamente?
  • Anomalias de esquema: Uma coluna foi removida? Um tipo de dado mudou?
  • Anomalias de atualização: O dado está recente? Ele foi atualizado na janela de tempo esperada?

No caso de estarmos lidando com uma mudança de esquema, que definitivamente não é previsível, precisamos conseguir identificar quando ela ocorreu. O quando vai nos ajudar a compreender um período de inatividade de dados, por exemplo. Além disso, quando esse tipo de problema acontece, é preciso identificar as dependências upstream e downstream dessa anomalia (utilizando a linhagem, por exemplo).

Esse capítulo também entra em detalhes da construção de alertas, como melhorar esses alertas com aprendizado de máquina e outros recursos. No momento, ainda não vou explorar isso tudo, mas deixo avisado que é um capítulo que vale muito a leitura!

Arquitetura para Confiabilidade de Dados

Como projetamos nossa infraestrutura de dados para que ela suporte todas essas práticas de qualidade?

O capítulo explora conceitos como a importância de uma “Data Warehouse” ou “Data Lakehouse” bem estruturados, o papel de catálogos de dados para governança e como as plataformas de observabilidade de dados se encaixam nesse ecossistema. A arquitetura deve ser pensada para facilitar o monitoramento, os testes e a resolução de problemas, tornando a confiabilidade uma característica inerente ao sistema, e não um “remendo”.

Uma reflexão importante aqui é como as camadas de dados de uma arquitetura devem estar conectadas, mas quando a gente pensa em processos de confiabilidade… não podemos fugir da mesma lógica. Ou seja, não podemos só ter um monitoramento em uma camada final de disponibilidade de dados para uma área de negócio, sendo que essa camada tem dependências upstream que podem impactar e mesmo, as downstream.

Outra discussão que o capítulo traz à tona é como definir SLAs, SLOs e SLIs para seus processos de dados. Nesse sentido, o livro incentiva que equipes de dados promovam SLAs da mesma forma que KPIs são promovidos. SLOs para fins de definir objetos e mensurar impacto da qualidade de dados para as áreas e usuários finais. Por fim, SLIs para acompanhar indicadores de incidentes, atualização de tabelas e coisas relacionadas a isso.

Como a ideia era conseguir dar um overview do livro, espero que tenha conseguido te dar uma ideia desses primeiros capítulos e do que esperar.

Mas como sempre, teremos também uma sessão prática do artigo, conectando coisas que conversamos e que li no livro e que me incentivou a pensar sobre.

Momento Prático

Detectando Anomalias com Python e uma Base de Dados Pública

Vamos usar a famosa base de dados pública de corridas de táxi de Nova York (NYC TLC Trip Record Data). Podemos usar uma pequena amostra para encontrar anomalias simples.

Imagine que recebemos um novo lote de dados e queremos fazer uma verificação rápida.

Dataset: Vamos simular a leitura de um arquivo Parquet de um mês específico, como Janeiro de 2024.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Carregando os dados (substitua pelo caminho do seu arquivo)
# df = pd.read_parquet('yellow_tripdata_2024-01.parquet')
# Para este exemplo, vamos criar um DataFrame simulado com anomalias
data = {
'tpep_pickup_datetime': pd.to_datetime(['2024-01-01 00:26:10', '2024-01-01 00:52:13', '2024-01-01 00:45:33', '2024-01-01 00:23:13', '2024-01-01 00:01:50']),
'passenger_count': [1.0, 2.0, 1.0, 99.0, 1.0], # Anomalia: 99 passageiros
'trip_distance': [1.20, 3.20, 0.50, 1.50, -0.50], # Anomalia: distância negativa
'fare_amount': [10.5, 18.2, 6.5, 0.0, 12.1], # Anomalia: valor da corrida zerado
'tip_amount': [2.85, 4.39, 0.00, 2.75, 2.00],
'total_amount': [16.15, 25.39, 9.30, 14.25, 16.90]
}
df = pd.DataFrame(data)
print("Informações iniciais do DataFrame:")
df.info()

A função info do Python é um bom começo porque ela nos retorna a tipagem dos dados que estamos trabalhando, isso também já um início no quesito de identificação de esquema, validação dos dados que você está trabalhando.

1. Detecção de Anomalias com describe()

A função describe() é nossa primeira ferramenta de investigação. Ela nos dá um resumo estatístico das colunas numéricas.

# Gerando estatísticas descritivas
print("\nEstatísticas Descritivas:")
print(df.describe())

O que podemos notar aqui?

  • passenger_count: O valor máximo (max) é 99.0. Isso é bem improvável para um táxi amarelo. É uma anomalia clara que precisa ser investigada. Pode ter sido um erro de digitação no sistema, por exemplo.
  • trip_distance: O valor mínimo (min) é -0.50. Uma distância de corrida não pode ser negativa. Outra anomalia evidente.
  • fare_amount: O valor mínimo (min) é 0.0. Uma corrida pode ter valor zero? Talvez em uma promoção ou erro, mas é um caso que merece atenção e validação com a área de negócio.

2. Visualizando Outliers com Boxplot

Um boxplot é excelente para visualizar a distribuição dos dados e identificar outliers.

# Configurando o estilo do gráfico
sns.set(style="whitegrid")
# Criando boxplots para as colunas de interesse
plt.figure(figsize=(15, 5))
plt.subplot(1, 3, 1)
sns.boxplot(y=df['passenger_count'])
plt.title('Boxplot de Passageiros')
plt.subplot(1, 3, 2)
sns.boxplot(y=df['trip_distance'])
plt.title('Boxplot de Distância da Corrida')
plt.subplot(1, 3, 3)
sns.boxplot(y=df['fare_amount'])
plt.title('Boxplot do Valor da Corrida')
plt.tight_layout()
plt.show()

O gráfico de passenger_count mostra claramente o ponto 99 como um outlier distante do resto da distribuição, confirmando nossa suspeita.

Esses são exemplos simples, mas ilustram o processo mental do monitoramento: estabeleça uma expectativa (ex: distâncias são positivas, passageiros < 10) e investigue qualquer desvio dessa expectativa.

Te desafio a utilizar a base pública para testar alguns testes de monitoramento de dados!

To be continued…

No próximo artigo, vamos explorar os cinco capítulos finais.

Espero que tenha tido uma boa leitura até aqui

Até a próxima!

Referência Bibliográfica

Moses, B.; Gavish, L.; Vorwerck, M. Fundamentos da Qualidade de Dados: Guia prático para criar pipelines de dados confiáveis. O’Reilly, 2024.

Learn more about Review do livro Fundamentos de Qualidade de Dados (Parte 1)

Leave a Reply