O Pointblank adota uma abordagem diferente para a qualidade dos dados. Não precisa ser uma tarefa técnica tediosa. Em vez disso, pode se tornar um processo focado na comunicação clara entre os membros da equipe. Enquanto outras bibliotecas de validação se concentram apenas na detecção de erros, o Pointblank se destaca tanto em encontrar problemas quanto em compartilhar insights. Nossos belos relatórios personalizáveis transformam resultados de validação em conversas com stakeholders, tornando os problemas de qualidade dos dados imediatamente compreensíveis e acionáveis para toda sua equipe.
Comece em minutos, não em horas. O recurso DraftValidation alimentado por IA do Pointblank analisa seus dados e sugere regras de validação inteligentes automaticamente. Assim, não há necessidade de ficar olhando para um script de validação vazio se perguntando por onde começar. O Pointblank pode impulsionar sua jornada de qualidade de dados para que você possa focar no que mais importa.
Seja você um cientista de dados que precisa comunicar rapidamente descobertas de qualidade de dados, um engenheiro de dados construindo pipelines robustos, ou um analista apresentando resultados de qualidade de dados para stakeholders do negócio, o Pointblank ajuda você a transformar a qualidade dos dados de uma reflextão tardia em uma vantagem competitiva.
A classe DraftValidation usa LLMs para analisar seus dados e gerar um plano de validação completo com sugestões inteligentes. Isso ajuda você a começar rapidamente com a validação de dados ou iniciar um novo projeto.
import pointblank as pb
# Carregue seus dados
data = pb.load_dataset("game_revenue") # Um conjunto de dados de exemplo
# Use DraftValidation para gerar um plano de validação
pb.DraftValidation(data=data, model="anthropic:claude-opus-4-6")A saída é um plano de validação completo com sugestões inteligentes baseadas em seus dados:
import pointblank as pb
# O plano de validação
validation = (
pb.Validate(
data=data,
label="Draft Validation",
thresholds=pb.Thresholds(warning=0.10, error=0.25, critical=0.35)
)
.col_vals_in_set(columns="item_type", set=["iap", "ad"])
.col_vals_gt(columns="item_revenue", value=0)
.col_vals_between(columns="session_duration", left=3.2, right=41.0)
.col_count_match(count=11)
.row_count_match(count=2000)
.rows_distinct()
.interrogate()
)
validationCopie, cole e personalize o plano de validação gerado conforme suas necessidades.
A API encadeável do Pointblank torna a validação simples e legível. O mesmo padrão sempre se aplica: (1) comece com Validate, (2) adicione etapas de validação, e (3) termine com interrogate().
import pointblank as pb
validation = (
pb.Validate(data=pb.load_dataset(dataset="small_table"))
.col_vals_gt(columns="d", value=100) # Validar valores > 100
.col_vals_le(columns="c", value=5) # Validar valores <= 5
.col_exists(columns=["date", "date_time"]) # Verificar existência de colunas
.interrogate() # Executar e coletar resultados
)
# Obtenha o relatório de validação no REPL com:
validation.get_tabular_report().show()
# Em um notebook, simplesmente use:
validationUma vez que você tenha um objeto validation interrogado, você pode aproveitar uma variedade de métodos para extrair insights como:
- obter relatórios detalhados para etapas individuais para ver o que deu errado
- filtrar tabelas baseadas em resultados de validação
- extrair dados problemáticos para depuração
- Funciona com sua stack atual: Integra-se perfeitamente com Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake e mais!
- Relatórios interativos bonitos: Resultados de validação claros que destacam problemas e ajudam a comunicar a qualidade dos dados
- Pipeline de validação componível: Encadeie etapas de validação em um fluxo de trabalho completo de qualidade de dados
- Alertas baseados em limites: Defina limites de 'aviso', 'erro' e 'crítico' com ações personalizadas
- Saídas práticas: Use resultados de validação para filtrar tabelas, extrair dados problemáticos ou acionar processos subsequentes
import pointblank as pb
import polars as pl
# Carregue seus dados
sales_data = pl.read_csv("sales_data.csv")
# Crie uma validação completa
validation = (
pb.Validate(
data=sales_data,
tbl_name="sales_data", # Nome da tabela para relatórios
label="Exemplo do mundo real", # Rótulo para a validação, aparece nos relatórios
thresholds=(0.01, 0.02, 0.05), # Defina limites para avisos, erros e problemas críticos
actions=pb.Actions( # Defina ações para qualquer excesso de limite
critical="Problema significativo de qualidade de dados encontrado na etapa {step} ({time})."
),
final_actions=pb.FinalActions( # Defina ações finais para toda a validação
pb.send_slack_notification(
webhook_url="https://hooks.slack.com/services/your/webhook/url"
)
),
brief=True, # Adicione resumos gerados automaticamente para cada etapa
lang="pt",
)
.col_vals_between( # Verifique intervalos numéricos com precisão
columns=["price", "quantity"],
left=0, right=1000
)
.col_vals_not_null( # Garanta que colunas terminadas com '_id' não tenham valores nulos
columns=pb.ends_with("_id")
)
.col_vals_regex( # Valide padrões com regex
columns="email",
pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
)
.col_vals_in_set( # Verifique valores categóricos
columns="status",
set=["pending", "shipped", "delivered", "returned"]
)
.conjointly( # Combine múltiplas condições
lambda df: pb.expr_col("revenue") == pb.expr_col("price") * pb.expr_col("quantity"),
lambda df: pb.expr_col("tax") >= pb.expr_col("revenue") * 0.05
)
.interrogate()
)Problema significativo de qualidade de dados encontrado na etapa 7 (2025-04-16 15:03:04.685612+00:00).
# Obtenha um relatório HTML que você pode compartilhar com sua equipe
validation.get_tabular_report().show("browser")# Obtenha um relatório de registros com falha de uma etapa específica
validation.get_step_report(i=3).show("browser") # Obtenha os registros com falha da etapa 3Para equipes que precisam de fluxos de trabalho de validação portáteis e controlados por versão, o Pointblank suporta arquivos de configuração YAML. Isso facilita o compartilhamento da lógica de validação entre diferentes ambientes e membros da equipe, garantindo que todos estejam na mesma página.
validation.yaml
validate:
data: small_table
tbl_name: "small_table"
label: "Validação de início"
steps:
- col_vals_gt:
columns: "d"
value: 100
- col_vals_le:
columns: "c"
value: 5
- col_exists:
columns: ["date", "date_time"]Execute a validação YAML
import pointblank as pb
# Execute validação da configuração YAML
validation = pb.yaml_interrogate("validation.yaml")
# Obtenha os resultados como qualquer outra validação
validation.get_tabular_report().show()Esta abordagem é perfeita para:
- Pipelines CI/CD: Armazene regras de validação junto com seu código
- Colaboração em equipe: Compartilhe lógica de validação em formato legível
- Consistência de ambiente: Use a mesma validação em desenvolvimento, staging e produção
- Documentação: Arquivos YAML servem como documentação viva dos seus requisitos de qualidade de dados
O Pointblank inclui uma poderosa ferramenta CLI chamada pb que permite executar fluxos de trabalho de validação de dados diretamente da linha de comando. Perfeita para pipelines CI/CD, verificações programadas de qualidade de dados ou tarefas de validação rápidas.
Explore seus dados
# Obtenha uma prévia rápida dos seus dados
pb preview small_table
# Prévia de dados de URLs do GitHub
pb preview "https://github.com/user/repo/blob/main/data.csv"
# Verifique valores ausentes em arquivos Parquet
pb missing data.parquet
# Gere resumos de colunas de conexões de banco de dados
pb scan "duckdb:///data/sales.ddb::customers"Execute validações essenciais
# Execute validação do arquivo de configuração YAML
pb run validation.yaml
# Execute validação do arquivo Python
pb run validation.py
# Verifique linhas duplicadas
pb validate small_table --check rows-distinct
# Valide dados diretamente do GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id
# Verifique que não há valores nulos em conjuntos de dados Parquet
pb validate "data/*.parquet" --check col-vals-not-null --column a
# Extraia dados com falhas para debug
pb validate small_table --check col-vals-gt --column a --value 5 --show-extractIntegre com CI/CD
# Use códigos de saída para automação em validações de linha única (0 = sucesso, 1 = falha)
pb validate small_table --check rows-distinct --exit-code
# Execute fluxos de trabalho de validação com códigos de saída
pb run validation.yaml --exit-code
pb run validation.py --exit-codePrecisa de dados de teste para seus fluxos de trabalho de validação? A função generate_dataset() cria dados sintéticos realistas e adaptados ao local, baseados em definições de esquema. É muito útil para desenvolver pipelines sem dados de produção, executar testes de CI/CD com cenários reproduzíveis, ou prototipar fluxos de trabalho antes que os dados de produção estejam disponíveis.
import pointblank as pb
# Definir um esquema com restrições de campos
schema = pb.Schema(
user_id=pb.int_field(min_val=1, unique=True),
name=pb.string_field(preset="name"),
email=pb.string_field(preset="email"),
age=pb.int_field(min_val=18, max_val=100),
status=pb.string_field(allowed=["active", "pending", "inactive"]),
)
# Gerar 10 linhas de dados de teste realistas
data = pb.generate_dataset(schema, n=10, seed=23)
pb.preview(data)O gerador suporta geração de dados sofisticada com estas capacidades:
- Dados realistas com presets: Use presets integrados como
"name","email","address","phone", etc. - Strings de user agent: Gere strings de user agent de navegador altamente variadas e realistas de 17 categorias de navegadores com mais de 42.000 combinações únicas
- Suporte a 100 países: Gere dados específicos de localização (ex.,
country="DE"para endereços alemães) - Restrições de campos: Controle intervalos, padrões, unicidade e valores permitidos
- Múltiplos formatos de saída: Retorna DataFrames Polars por padrão, mas também suporta Pandas (
output="pandas") ou dicionários (output="dict")
- Fluxo de trabalho de validação completo: Do acesso aos dados à validação até a geração de relatórios em um único pipeline
- Construído para colaboração: Compartilhe resultados com colegas através de relatórios interativos bonitos
- Saídas práticas: Obtenha exatamente o que você precisa: contagens, extratos, resumos ou relatórios completos
- Implementação flexível: Use em notebooks, scripts ou pipelines de dados
- Geração de dados sintéticos: Crie dados de teste realistas com mais de 30 presets, strings de user agent, formatação adaptada ao locale e suporte a 100 países
- Personalizável: Adapte etapas de validação e relatórios às suas necessidades específicas
- Internacionalização: Os relatórios podem ser gerados em 40 idiomas, incluindo inglês, espanhol, francês e alemão
Visite nosso site de documentação para:
Adoraríamos ouvir de você! Conecte-se conosco:
- GitHub Issues para relatórios de bugs e solicitações de recursos
- Servidor Discord para discussões e ajuda
- Diretrizes de contribuição se você quiser ajudar a melhorar o Pointblank
Você pode instalar o Pointblank usando pip:
pip install pointblankVocê também pode instalar o Pointblank do Conda-Forge usando:
conda install conda-forge::pointblankSe você não tem o Polars ou Pandas instalado, precisará instalar um deles para usar o Pointblank.
pip install "pointblank[pl]" # Instalar Pointblank com Polars
pip install "pointblank[pd]" # Instalar Pointblank com PandasPara usar o Pointblank com DuckDB, MySQL, PostgreSQL ou SQLite, instale o Ibis com o backend apropriado:
pip install "pointblank[duckdb]" # Instalar Pointblank com Ibis + DuckDB
pip install "pointblank[mysql]" # Instalar Pointblank com Ibis + MySQL
pip install "pointblank[postgres]" # Instalar Pointblank com Ibis + PostgreSQL
pip install "pointblank[sqlite]" # Instalar Pointblank com Ibis + SQLiteO Pointblank usa Narwhals para trabalhar com DataFrames Polars e Pandas, e integra-se com Ibis para suporte a bancos de dados e formatos de arquivo. Essa arquitetura fornece uma API consistente para validar dados tabulares de diversas fontes.
Existem muitas maneiras de contribuir para o desenvolvimento contínuo do Pointblank. Algumas contribuições podem ser simples (como corrigir erros de digitação, melhorar a documentação, enviar problemas para solicitações de recursos, etc.) e outras podem exigir mais tempo e atenção (como responder a perguntas e enviar PRs com alterações de código). Saiba que qualquer ajuda que você possa oferecer será muito apreciada!
Por favor, leia as diretrizes de contribuição para informações sobre como começar.
Estamos trabalhando ativamente para melhorar o Pointblank com:
- Métodos adicionais de validação para verificações abrangentes de qualidade de dados
- Capacidades avançadas de registro (logging)
- Ações de mensagens (Slack, email) para excessos de limites
- Sugestões de validação alimentadas por LLM e geração de dicionário de dados
- Configuração JSON/YAML para portabilidade de pipelines
- Utilitário CLI para validação a partir da linha de comando
- Suporte estendido e certificação de backend
- Documentação e exemplos de alta qualidade
Se você tem ideias para recursos ou melhorias, não hesite em compartilhá-las conosco! Estamos sempre procurando maneiras de melhorar o Pointblank.
Observe que o projeto Pointblank é publicado com um código de conduta para colaboradores.
Ao participar deste projeto, você concorda em cumprir seus termos.
O Pointblank é licenciado sob a licença MIT.
© Posit Software, PBC.
Este projeto é mantido principalmente por Rich Iannone. Outros autores podem ocasionalmente ajudar com algumas dessas tarefas.





