Evaluación diferida
Ejemplo: Diferido vs Inmediato
Beneficios de la evaluación diferida
- Optimización de consultas: Varias operaciones se compilan en una sola 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 o depurar la consulta antes de ejecutarla
Activadores de ejecución
Activadores automáticos
Ejemplos:
Operaciones que se mantienen en diferido
Ejemplos:
Ejecución en tres fases
Fase 1: Construcción de consultas SQL (diferida)
Fase 2: Momento de ejecución
Fase 3: Operaciones con DataFrame (si las hay)
Ver planes de ejecución
explain() para ver qué se va a ejecutar:
Query
Response
verbose=True para ver más detalles:
Almacenamiento en caché
Cómo funciona la caché
Invalidación de caché
Control manual de caché
Combinación de SQL y operaciones de Pandas
Operaciones compatibles con SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Operaciones con columnas (matemáticas, comparaciones y métodos de cadena)
Operaciones solo de Pandas
apply()con funciones personalizadaspivot_table()con agregaciones complejasstack(),unstack()- Operaciones sobre DataFrames ya ejecutados
Canalizaciones híbridas
Selección del motor de ejecución
Modo automático (predeterminado)
Forzar el uso del motor chDB
Forzar el motor de pandas
Impacto en el rendimiento
Bueno: Filtra pronto
Malo: filtrar al final
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 ejecútala una sola vez
- Filtra cuanto antes - Reduce los datos en el origen
- Selecciona solo las columnas necesarias - La poda de 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 - Entiende cuándo se invalida la caché