DEV Community

William Rodriguez
William Rodriguez

Posted on

De DataFrame de Pandas a ClickHouse en milisegundos sin bucles SQL.

Día 05 de la serie técnica WClickHouse Open Source.

Jamás uses df.iterrows() para insertar datos en una base de datos analítica. WClickHouse insert_dataframe() carga DataFrames a velocidad de red.

Los Problemas Reales

  • Científicos de datos usando df.iterrows() tardando 20 minutos en cargar datos
  • Incompatibilidades de tipo entre float64/NaN de Pandas y Nullable de ClickHouse
  • Crashes en Jupyter Notebooks al exportar datasets experimentales pesados

La Implementación

import pandas as pd
from wclickhouse import WClickHouse

# Real-world Pandas DataFrame from ETL or model training
df = pd.DataFrame({
    "user_id": range(100000),
    "feature_score": [0.85] * 100000,
    "timestamp": pd.date_range("2026-01-01", periods=100000, freq="s")
})

db = WClickHouse(FeatureModel, db_config)
db.insert_dataframe(df)  # Vectorized native ingestion!
Enter fullscreen mode Exit fullscreen mode

Por qué esta arquitectura gana

  • insert_dataframe(): Inserción en una sola línea usando backend vectorizado.
  • Ingestión Sub-Segundo: Ingesta 100.000 filas de DataFrame en menos de 0,6 segundos.
  • Alineación de Tipos: Mapea dtypes de Pandas al esquema de ClickHouse limpiamente.

Verificación y Estado

Probado y verificado contra instancias reales de ClickHouse con más de 95% de cobertura de tests. Desarrollado para Python 3.9 a 3.14 con Apache Arrow y Pydantic v2.

ClickHouse #Python #DataEngineering #OLAP #BigData #Wisrovi

Top comments (0)