Passer au contenu principal
DataStore est l’API compatible avec pandas de chDB qui associe l’interface familière des pandas DataFrame à la puissance de l’optimisation des requêtes SQL et vous permet d’écrire du code dans le style de pandas tout en bénéficiant des performances de ClickHouse.

Fonctionnalités clés

  • Compatibilité avec pandas : 209 méthodes de DataFrame pandas, 56 méthodes .str, plus de 42 méthodes .dt
  • Optimisation SQL : les opérations sont automatiquement compilées en requêtes SQL optimisées
  • Évaluation paresseuse : les opérations sont différées jusqu’à ce que leurs résultats soient nécessaires
  • 630+ méthodes d’API : une API complète pour la manipulation des données
  • Extensions ClickHouse : accesseurs supplémentaires (.arr, .json, .url, .ip, .geo) non disponibles dans pandas

Architecture

DataStore utilise l’évaluation paresseuse avec une exécution sur deux moteurs :
  1. Chaîne d’opérations différées : les opérations sont enregistrées, sans être exécutées immédiatement
  2. Sélection intelligente du moteur : QueryPlanner dirige chaque segment vers le moteur le plus adapté (chDB pour SQL, Pandas pour les opérations complexes)
  3. Mise en cache intermédiaire : les résultats sont mis en cache à chaque étape pour accélérer l’exploration itérative
Voir le Modèle d’exécution pour plus de détails.

Migration en une ligne à partir de Pandas

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

# After (DataStore) - just change the import!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
Votre code pandas existant fonctionne tel quel, mais s’exécute désormais sur le moteur ClickHouse.

Comparaison des performances

DataStore offre des gains de performances significatifs par rapport à pandas, en particulier pour l’agrégation et les pipelines complexes :
OpérationPandasDataStoreGain de vitesse
GroupBy count347ms17ms19.93x
Pipeline complexe2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
GroupBy agg406ms141ms2.88x
Benchmark sur 10 M de lignes. Voir le script de benchmark et le guide des performances pour plus de détails.

Quand utiliser DataStore

Utilisez DataStore lorsque :
  • Vous travaillez avec de grands jeux de données (des millions de lignes)
  • Vous effectuez des agrégations et des opérations de groupby
  • Vous interrogez des données depuis des fichiers, des bases de données ou un stockage cloud
  • Vous créez des pipelines de données complexes
  • Vous souhaitez profiter de l’API pandas avec de meilleures performances
Utilisez l’API Raw SQL lorsque :
  • Vous préférez écrire du SQL directement
  • Vous avez besoin d’un contrôle précis sur l’exécution des requêtes
  • Vous utilisez des fonctionnalités propres à ClickHouse qui ne sont pas exposées dans l’API pandas

Comparaison des fonctionnalités

FonctionnalitéPandasPolarsDuckDBDataStore
Compatibilité avec l’API Pandas-PartielleNonTotale
Évaluation paresseuseNonOuiOuiOui
Prise en charge des requêtes SQLNonOuiOuiOui
Fonctions ClickHouseNonNonNonOui
Accesseurs String/DateTimeOuiOuiNonOui + extras
Array/JSON/URL/IP/GeoNonPartielleNonOui
Requêtes directes sur des fichiersNonOuiOuiOui
Prise en charge du stockage cloudNonLimitéeOuiOui

Statistiques de l’API

CatégorieNombreCouverture
Méthodes DataFrame209100 % de pandas
Accesseur Series.str56100 % de pandas
Accesseur Series.dt42+100 %+ (inclut des extensions propres à ClickHouse)
Accesseur Series.arr37Spécifique à ClickHouse
Accesseur Series.json13Spécifique à ClickHouse
Accesseur Series.url15Spécifique à ClickHouse
Accesseur Series.ip9Spécifique à ClickHouse
Accesseur Series.geo14Spécifique à ClickHouse
Total des méthodes de l’API630+-

Prise en main

Référence de l’API

Sujets avancés

Configuration & débogage

Guides d’utilisation de Pandas

Exemple rapide

from chdb import datastore as pd

# Read data from various sources
ds = pd.read_csv("sales.csv")
# or: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# or: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# Familiar pandas operations - automatically optimized to 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
)

# View the generated SQL
print(result.to_sql())

# Execute and get results
df = result.to_df()  # Returns pandas DataFrame

Étapes suivantes

Dernière modification le 29 juin 2026