Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DataStore : API compatible pandas avec optimisation SQL

DataStore est l’API compatible avec pandas de chDB. Elle associe l’interface familière des DataFrame pandas à 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 les résultats soient nécessaires
  • 630+ méthodes d’API : une API complète pour la manipulation des données
  • Extensions ClickHouse : des accesseurs supplémentaires (.arr, .json, .url, .ip, .geo) indisponibles dans pandas

Architecture

Architecture de DataStore

DataStore utilise une évaluation paresseuse avec une exécution sur deux moteurs :

  1. Chaîne d'opérations différées : les opérations sont enregistrées, et non exécutées immédiatement
  2. Sélection intelligente du moteur : QueryPlanner oriente 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 depuis 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ération Pandas DataStore Accélération
Count de GroupBy 347ms 17ms 19.93x
Pipeline complexe 2,047ms 380ms 5.39x
Filter+Sort+Head 1,537ms 350ms 4.40x
Agrégation GroupBy 406ms 141ms 2.88x

Benchmark effectué sur 10M 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 groupby
  • Vous interrogez des données provenant de fichiers, de bases de données ou du stockage cloud
  • Vous construisez des pipelines de données complexes
  • Vous souhaitez bénéficier de l'API pandas avec de meilleures performances

Utilisez l'API SQL brut lorsque :

  • Vous préférez écrire directement en SQL
  • Vous avez besoin d'un contrôle fin sur l'exécution des requêtes
  • Vous travaillez avec des fonctionnalités spécifiques à ClickHouse qui ne sont pas exposées dans l'API pandas

Comparaison des fonctionnalités

Fonctionnalité Pandas Polars DuckDB DataStore
Compatible avec l'API Pandas - Partielle Non Complète
Évaluation paresseuse Non Oui Oui Oui
Prise en charge des requêtes SQL Non Oui Oui Oui
Fonctions ClickHouse Non Non Non Oui
Accesseurs String/DateTime Oui Oui Non Oui + extras
Array/JSON/URL/IP/Geo Non Partielle Non Oui
Requêtes directes sur des fichiers Non Oui Oui Oui
Prise en charge du stockage dans le cloud Non Limitée Oui Oui

Statistiques de l’API

Catégorie Nombre Couverture
Méthodes de DataFrame 209 100 % de pandas
Accesseur Series.str 56 100 % de pandas
Accesseur Series.dt 42+ 100 %+ (inclut des fonctionnalités supplémentaires de ClickHouse)
Accesseur Series.arr 37 Spécifique à ClickHouse
Accesseur Series.json 13 Spécifique à ClickHouse
Accesseur Series.url 15 Spécifique à ClickHouse
Accesseur Series.ip 9 Spécifique à ClickHouse
Accesseur Series.geo 14 Spécifique à ClickHouse
Total des méthodes de l’API 630+ -

Prise en main

Référence de l’API

Sujets avancés

Configuration et 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

Navigation