Evaluación diferida
Ejemplo: evaluación diferida vs. inmediata
Beneficios de la evaluación diferida
- Optimización de consultas: Varias operaciones se convierten en una única consulta SQL optimizada
- Pushdown de filtros: Los filtros se aplican a nivel de la fuente de datos
- Poda de columnas: Solo se leen las columnas necesarias
- Decisiones diferidas: El motor de ejecución puede elegirse en tiempo de ejecución
- Inspección del plan: Puede ver/depurar la consulta antes de ejecutarla
Activadores de ejecución
Activadores automáticos
Ejemplos:
Operaciones que siguen siendo diferidas
Ejemplos:
Ejecución en tres fases
Fase 1: Construcción perezosa de consultas SQL
Fase 2: Punto de ejecución
Fase 3: Operaciones de DataFrame (si las hay)
Ver planes de ejecución
explain() para ver qué se ejecutará:
Query
Response
verbose=True para obtener más información:
Caché
Cómo funciona la caché
Invalidación de caché
Control manual de caché
Combinación de operaciones SQL y de Pandas
Operaciones compatibles con SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Operaciones sobre columnas (matemáticas, comparación, métodos de cadenas)
Operaciones exclusivas de Pandas
apply()con funciones personalizadaspivot_table()con agregaciones complejasstack(),unstack()- Operaciones sobre DataFrames ejecutados
Canalizaciones híbridas
Selección del motor de ejecución
Modo automático (predeterminado)
Forzar el motor chDB
Forzar el motor de pandas
Implicaciones en el rendimiento
Bien: filtrar pronto
Mal: filtrar tarde
Bien: Selecciona las columnas desde el principio
Bien: deja que SQL haga el trabajo
Resumen de buenas prácticas
- Encadena las operaciones antes de ejecutar - Construye la consulta completa y luego ejecútala una sola vez
- Filtra cuanto antes - Reduce los datos en el origen
- Selecciona solo las columnas necesarias - Descartar columnas mejora el rendimiento
- Usa
explain()para entender la ejecución - Depura antes de ejecutar - Deja que SQL se encargue de las agregaciones - ClickHouse está optimizado para ello
- Ten en cuenta qué desencadena la ejecución - Evita ejecutar antes de tiempo por accidente
- Usa la caché con criterio - Comprende cuándo se invalida