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

작성자

카테고리:

← 피드로
DEV Community · William Rodriguez · 2026-09-27 개발(SW)

William Rodriguez

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

원문에서 계속 ↗