Pular para o conteúdo principal
DataStore é a API compatível com o Pandas do chDB que combina a conhecida interface de DataFrame do pandas com o poder da otimização de consultas SQL e permite escrever código no estilo do pandas com o desempenho do ClickHouse.

Principais recursos

  • Compatibilidade com pandas: 209 métodos de DataFrame do pandas, 56 métodos .str, 42+ métodos .dt
  • Otimização de SQL: as operações são convertidas automaticamente em consultas SQL otimizadas
  • Avaliação preguiçosa: as operações são adiadas até que os resultados sejam necessários
  • 630+ métodos de API: API abrangente para manipulação de dados
  • Extensões do ClickHouse: acessores adicionais (.arr, .json, .url, .ip, .geo) não disponíveis no pandas

Arquitetura

O DataStore usa avaliação preguiçosa com execução em dois engines:
  1. Encadeamento preguiçoso de operações: as operações são registradas, não executadas imediatamente
  2. Seleção inteligente de engine: o QueryPlanner direciona cada segmento para o engine ideal (chDB para SQL, Pandas para operações complexas)
  3. Cache intermediário: os resultados são armazenados em cache a cada etapa para uma exploração iterativa mais rápida
Consulte o Modelo de Execução para mais detalhes.

Migração com uma única linha a partir do Pandas

# Antes (pandas)
import pandas as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()

# Depois (DataStore) - basta mudar o import!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
Seu código pandas existente funciona sem alterações, mas agora roda no mecanismo do ClickHouse.

Comparação de desempenho

O DataStore oferece ganhos significativos de desempenho em comparação com o pandas, especialmente em agregação e pipelines complexos:
OperaçãoPandasDataStoreGanho de velocidade
Contagem com GroupBy347ms17ms19.93x
Pipeline complexo2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
Agregação com GroupBy406ms141ms2.88x
Benchmark com 10M linhas. Veja o script de benchmark e o Guia de desempenho para mais detalhes.

Quando usar DataStore

Use o DataStore quando:
  • Estiver trabalhando com grandes conjuntos de dados (milhões de linhas)
  • Estiver realizando agregações e operações de groupby
  • Estiver consultando dados de arquivos, bancos de dados ou armazenamento em nuvem
  • Estiver criando pipelines de dados complexos
  • Quiser a API do pandas com melhor desempenho
Use a API de SQL puro quando:
  • Preferir escrever SQL diretamente
  • Precisar de controle mais refinado sobre a execução de consultas
  • Estiver trabalhando com recursos específicos do ClickHouse não expostos na API do pandas

Comparação de funcionalidades

FuncionalidadePandasPolarsDuckDBDataStore
Compatível com a API do Pandas-ParcialNãoCompleta
avaliação preguiçosaNãoSimSimSim
Suporte a consultas SQLNãoSimSimSim
Funções do ClickHouseNãoNãoNãoSim
Acessores de String/DateTimeSimSimNãoSim + extras
Array/JSON/URL/IP/GeoNãoParcialNãoSim
Consultas diretas em arquivosNãoSimSimSim
Suporte a armazenamento em nuvemNãoLimitadoSimSim

Estatísticas da API

CategoriaQuantidadeCobertura
Métodos do DataFrame209100% do pandas
Accessor Series.str56100% do pandas
Accessor Series.dt42+100%+ (inclui recursos extras do ClickHouse)
Accessor Series.arr37específico do ClickHouse
Accessor Series.json13específico do ClickHouse
Accessor Series.url15específico do ClickHouse
Accessor Series.ip9específico do ClickHouse
Accessor Series.geo14específico do ClickHouse
Total de métodos da API630+-

Primeiros passos

Referência da API

Tópicos avançados

Configuração e depuração

Guias para usuários do Pandas

Exemplo rápido

from chdb import datastore as pd

# Leia dados de várias fontes
ds = pd.read_csv("sales.csv")
# ou: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# ou: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# Operações familiares do pandas - automaticamente otimizadas para SQL
result = (ds
    .filter(ds['amount'] > 1000)           # WHERE amount > 1000
    .groupby('region')                      # GROUP BY region
    .agg({'amount': ['sum', 'mean']})       # SUM(amount), AVG(amount)
    .sort_values('sum', ascending=False)    # ORDER BY sum DESC
    .head(10)                               # LIMIT 10
)

# Visualize o SQL gerado
print(result.to_sql())

# Execute e obtenha os resultados
df = result.to_df()  # Retorna um pandas DataFrame

Próximos passos

Última modificação em 10 de junho de 2026