Saltar al contenido principal
DataStore es la API compatible con pandas de chDB que combina la conocida interfaz de pandas DataFrame con la potencia de la optimización de consultas SQL y le permite escribir código al estilo de pandas mientras obtiene el rendimiento de ClickHouse.

Características principales

  • Compatibilidad con pandas: 209 métodos de DataFrame de pandas, 56 métodos .str, 42+ métodos .dt
  • Optimización de SQL: Las operaciones se convierten automáticamente en consultas SQL optimizadas
  • Evaluación diferida: Las operaciones se posponen hasta que se necesitan los resultados
  • Más de 630 métodos de API: Una API completa para la manipulación de datos
  • Extensiones de ClickHouse: Accesores adicionales (.arr, .json, .url, .ip, .geo) no disponibles en pandas

Arquitectura

DataStore usa evaluación diferida con ejecución con doble motor:
  1. Cadena de operaciones diferidas: las operaciones se registran; no se ejecutan de inmediato
  2. Selección inteligente del motor: QueryPlanner dirige cada segmento al motor óptimo (chDB para SQL, Pandas para operaciones complejas)
  3. Almacenamiento en caché intermedio: los resultados se almacenan en caché en cada paso para agilizar la exploración iterativa
Consulta modelo de ejecución para más detalles.

Migración desde Pandas en una sola línea

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

# Después (DataStore) - ¡solo cambia el import!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
Tu código actual de pandas funciona sin cambios, pero ahora se ejecuta sobre el ClickHouse engine.

Comparación de rendimiento

DataStore ofrece mejoras significativas de rendimiento frente a pandas, especialmente en la agregación y en las canalizaciones complejas:
OperaciónPandasDataStoreMejora
Recuento con GroupBy347ms17ms19.93x
Pipeline complejo2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
Agregación con GroupBy406ms141ms2.88x
Benchmark con 10 M de filas. Consulta el script de benchmark y la guía de rendimiento para obtener más información.

Cuándo usar DataStore

Usa DataStore cuando:
  • Trabajas con conjuntos de datos grandes (millones de filas)
  • Realizas agregaciones y operaciones de agrupación (groupby)
  • Consultas datos desde archivos, bases de datos o almacenamiento en la nube
  • Creas canalizaciones de datos complejas
  • Quieres la API de pandas con mejor rendimiento
Usa la API de SQL directo cuando:
  • Prefieres escribir SQL directamente
  • Necesitas un control detallado sobre la ejecución de consultas
  • Trabajas con funcionalidades específicas de ClickHouse que no están expuestas en la API de pandas

Comparación de funcionalidades

CaracterísticaPandasPolarsDuckDBDataStore
Compatible con la API de Pandas-ParcialNoCompleta
Evaluación diferidaNo
Compatibilidad con consultas SQLNo
Funciones de ClickHouseNoNoNo
Accesores de String/DateTimeNoSí + extras
Array/JSON/URL/IP/GeoNoParcialNo
Consultas directas sobre archivosNo
Compatibilidad con almacenamiento en la nubeNoLimitado

Estadísticas de la API

CategoríaCantidadCobertura
Métodos de DataFrame209100% de pandas
Accesor str de Series56100% de pandas
Accesor dt de Series42+100%+ (incluye funciones adicionales de ClickHouse)
Accesor arr de Series37específico de ClickHouse
Accesor json de Series13específico de ClickHouse
Accesor url de Series15específico de ClickHouse
Accesor ip de Series9específico de ClickHouse
Accesor geo de Series14específico de ClickHouse
Total de métodos de la API630+-

Primeros pasos

Referencia de la API

Temas avanzados

Configuración y depuración

Guías de usuario de Pandas

Ejemplo rápido

from chdb import datastore as pd

# Leer datos de varias fuentes
ds = pd.read_csv("sales.csv")
# o: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# o: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# Operaciones familiares de pandas - optimizadas automáticamente a 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
)

# Ver el SQL generado
print(result.to_sql())

# Ejecutar y obtener resultados
df = result.to_df()  # Devuelve un DataFrame de pandas

Siguientes pasos

Última modificación el 10 de junio de 2026