Dados de perfil

Concluído

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.

Diagrama explica como gerar estatísticas resumidas usando SQL.

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.

O diagrama explica como usar o perfil de dados no Unity Catalog.

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:

  1. Navegue até à sua tabela no Explorador de Catálogos.
  2. Selecione a aba Qualidade.
  3. 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.
  4. No diálogo Monitorização da Qualidade de Dados , no campo de perfilagem de dados , selecione Configurar.
  5. 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.