Dados de perfil
Antes de limpar ou transformar dados, precisa de perceber o que está nas suas tabelas. Perfilar dados significa examinar os seus conjuntos de dados para gerar estatísticas resumidas — contagens, médias, distribuições de valor e percentagens nulas — que revelam a qualidade e estrutura dos seus dados. Esta base ajuda-o a identificar problemas como valores em falta, exceções e padrões inesperados antes que causem problemas a jusante.
Nesta unidade, aprende como gerar estatísticas resumidas usando comandos SQL e a funcionalidade de perfil de dados no Azure Databricks.
Gerar estatísticas resumidas usando SQL
O Azure Databricks fornece comandos SQL que recolhem e mostram estatísticas sobre as suas tabelas. Estas estatísticas ajudam o otimizador de consultas a escolher planos de execução eficientes e dão-lhe uma visão das características dos seus dados.
Recolha estatísticas com a ANALYZE TABLE
O ANALYZE TABLE comando calcula estatísticas para uma tabela ou colunas específicas. Estas estatísticas incluem contagens de linhas, métricas ao nível de coluna como valores mínimos e máximos, contagens nulas e contagens de valores distintas.
-- Collect basic table statistics (row count and size)
ANALYZE TABLE sales.transactions COMPUTE STATISTICS;
-- Collect statistics for specific columns
ANALYZE TABLE sales.transactions COMPUTE STATISTICS FOR COLUMNS
transaction_id, amount, customer_id;
-- Collect statistics for all columns
ANALYZE TABLE sales.transactions COMPUTE STATISTICS FOR ALL COLUMNS;
Quando analisa uma coluna específica, obtém métricas detalhadas:
-- View column-level statistics
DESC EXTENDED sales.transactions amount;
Isto devolve métricas incluindo valor mínimo, valor máximo, número de nulos, contagem distinta, comprimento médio da coluna e comprimento máximo da coluna.
Ver estatísticas com DESCRIBE TABLE
O DESCRIBE TABLE EXTENDED comando apresenta estatísticas recolhidas juntamente com metadados da tabela:
DESCRIBE TABLE EXTENDED sales.transactions;
Também pode usar o PySpark para recuperar metadados das tabelas e gerar estatísticas resumo:
# Generate summary statistics for numeric columns using the DataFrame API
df = spark.table("sales.transactions")
df.describe().show()
O método describe() devolve contagem, média, desvio padrão, mínimo e máximo para colunas numéricas e de texto.
A DESCRIBE TABLE EXTENDED saída inclui uma Statistics linha que mostra o tamanho da tabela em bytes e, após executar ANALYZE TABLE ... COMPUTE STATISTICS, a contagem de linhas. Para tabelas geridas pelo Unity Catalog, a otimização preditiva é executada ANALYZE automaticamente para manter as estatísticas atualizadas.
Sugestão
Execute ANALYZE TABLE após cargas massivas de dados ou alterações significativas para garantir que o otimizador de consultas tem estatísticas precisas para planear consultas eficientes.
Use o perfil de dados no Unity Catalog
Para além dos comandos SQL, o Azure Databricks fornece monitorização da qualidade dos dados no Unity Catalog — um guarda-chuva que cobre duas capacidades distintas:
- A deteção de anomalias (Pré-visualização Pública) monitoriza automaticamente todas as tabelas de um esquema. Analisa padrões históricos para avaliar a frescura de cada tabela (quão recentemente foi atualizada) e a completude (se o número esperado de linhas chegou). Ativa-o uma vez ao nível do esquema no Explorador de Catálogos, e o Azure Databricks determina com que frequência deve analisar cada tabela. Use deteção de anomalias para uma cobertura ampla e automatizada em todas as suas tabelas sem configuração por tabela.
- A perfilação de dados fornece uma análise estatística aprofundada por tabela — acompanhando distribuições, percentagens nulas, métricas de deriva e desempenho do modelo ao longo do tempo. Configura-se individualmente para cada tabela. Use o perfil de dados para as tabelas mais críticas onde precisa de tendências históricas detalhadas.
Para trabalhos de engenharia de dados focados na limpeza e qualidade, utilize ambos: deteção de anomalias como sistema de alerta precoce em todas as tabelas, e perfilamento de dados para monitorização aprofundada das tabelas-chave.
Compreender os tipos de perfis
O perfilamento de dados suporta três tipos de análise, cada um adequado a diferentes cenários:
| Tipo de perfil | Caso de uso | Características principais |
|---|---|---|
| Instantâneo | Tabelas de uso geral | Calcula métricas em toda a tabela a cada atualização |
| Séries temporais | Tabelas com colunas de timestamp | Acompanha métricas ao longo de janelas temporais para detetar tendências |
| Inferência | Tabelas de inferência de modelos de ML | Monitoriza as entradas, previsões e precisão do modelo ao longo do tempo |
Para tarefas de engenharia de dados focadas na qualidade dos dados, os perfis de snapshot e série temporal são os mais relevantes.
Crie um perfil usando a interface
Para criar um perfil no Explorador de Catálogos:
- Navegue até à sua tabela no Explorador de Catálogos.
- Selecione a aba Qualidade.
- Se a deteção de anomalias não estiver ativada para o esquema, selecione Ativar. Se a deteção de anomalias já estiver ativada, selecione Configurar.
- No diálogo Monitorização da Qualidade de Dados , no campo de perfilagem de dados , selecione Configurar.
- Escolha o tipo de perfil e configure opções como granularidade e agendamento.
O perfil gera uma tabela de métricas de perfil com estatísticas resumidas e uma tabela de métricas de desvio que acompanha as alterações na distribuição ao longo do tempo. O Azure Databricks preenche a tabela de métricas de deriva quando existe uma tabela de referência ou uma janela temporal consecutiva disponível.
Crie um perfil usando a API
Para acesso programático, utilize o SDK Databricks. Instale ou atualize o SDK para obter a API atual:
%pip install "databricks-sdk>=0.68.0"
Depois cria um perfil de snapshot para uma tabela:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.dataquality import Monitor, DataProfilingConfig, SnapshotConfig
w = WorkspaceClient()
# Retrieve the table ID and schema ID required by the API
table = w.tables.get(full_name="main.sales.transactions")
schema = w.schemas.get(full_name="main.sales")
w.data_quality.create_monitor(
monitor=Monitor(
object_type="table",
object_id=table.table_id,
data_profiling_config=DataProfilingConfig(
output_schema_id=schema.schema_id,
assets_dir="/Workspace/Users/user@example.com/monitoring",
snapshot=SnapshotConfig()
)
)
)
Para atualizar o perfil e atualizar métricas:
from databricks.sdk.service.dataquality import Refresh
w.data_quality.create_refresh(
object_type="table",
object_id=table.table_id,
refresh=Refresh(object_type="table", object_id=table.table_id)
)
Interpretar resultados de perfilação
O perfilamento gera métricas que o ajudam a avaliar a qualidade dos dados e a identificar questões que requerem atenção.
Métricas-chave a examinar
A tabela de métricas de perfil contém estatísticas para cada coluna:
| Métrico | O que revela |
|---|---|
count e num_nulls |
Completude dos dados — percentagens nulas elevadas podem indicar problemas de ingestão |
distinct_count |
Cardinalidade — valores inesperados podem sugerir problemas de qualidade dos dados |
min, max, avg, stddev |
Características de distribuição — valores fora do comum ou distribuições enviesadas |
frequent_items |
Valores mais comuns — ajuda a identificar categorias dominantes ou duplicados |
quantiles |
Distribuição de valor — útil para detetar assimetria |
Detetar problemas de qualidade dos dados
Ao analisar os resultados do perfil, procure estes indicadores comuns:
- Percentagens nulas elevadas em colunas que deveriam ter valores
- Contagens distintas inesperadas, como identificadores únicos que não são únicos
- Os valores ficam fora dos limites esperados, como valores negativos onde apenas os positivos são válidos
- A distribuição muda ao longo do tempo, o que pode indicar desvio de dados
A tabela de métricas de deriva calcula testes estatísticos, tais como o teste de Kolmogorov-Smirnov (KS) para colunas numéricas e o teste qui-quadrado para colunas categóricas. Estes testes quantificam quanto as distribuições mudaram.
Compreender estes padrões ajuda-o a desenhar regras adequadas de limpeza e validação para os seus pipelines de dados.