Tabla resumen
1. Ejecución diferida vs inmediata
pandas (ejecución inmediata)
DataStore (Diferido)
Por qué es importante
- Optimización de consultas: varias operaciones se compilan en una sola consulta SQL
- Poda de columnas: solo se leen las columnas necesarias
- Pushdown de filtros: los filtros se aplican en el origen
- Uso eficiente de la memoria: no se cargan datos innecesarios
2. Tipos de retorno
pandas
DataStore
Conversión a tipos de pandas
3. Activadores de ejecución
Operaciones que permanecen diferidas
4. Orden de filas
pandas
DataStore
rowNumberInAllBlocks()) para garantizar la coherencia del orden con pandas.
Cuando se mantiene el orden
- Fuentes de archivo (CSV, Parquet, JSON, etc.)
- Fuentes de pandas DataFrame
- Operaciones de filtro
- Selección de columnas
- Después de llamar explícitamente a
sort()osort_values() - Operaciones que definen el orden (
nlargest(),nsmallest(),head(),tail())
Cuándo puede variar el orden
- Después de las agregaciones de
groupby()(usasort_values()para garantizar un orden consistente) - Después de
merge()/join()con ciertos tipos de join - En modo de rendimiento (
config.use_performance_mode()): el orden de las filas no está garantizado en ninguna operación. Consulta Performance Mode.
5. Sin el parámetro inplace
pandas
DataStore
inplace=True no es compatible. Asigne siempre el resultado:
¿Por qué no existe inplace?
- La creación de consultas (evaluación diferida)
- Seguridad en entornos multihilo
- Depuración más sencilla
- Código más limpio
6. Compatibilidad con índices
pandas
DataStore
La fuente de DataStore es importante
- Fuente de DataFrame: Conserva el índice de pandas
- Fuente de File: Usa un índice entero simple
7. Comportamiento de las comparaciones
Comparación con pandas
Uso de equals()
8. Inferencia de tipos
pandas
DataStore
Conversión explícita de tipos
9. Modelo de memoria
pandas
DataStore
10. Mensajes de error
Diferentes fuentes de errores
- errores de pandas: De la biblioteca pandas
- errores de DataStore: De chDB o ClickHouse
Consejos de depuración
Lista de comprobación de migración
- Cambia la instrucción de importación
- Elimina los parámetros
inplace=True - Añade una llamada explícita a
to_df()cuando se requiera un pandas DataFrame - Añade ordenación si el orden de las filas es importante
- Usa
to_pandas()para pruebas comparativas - Haz pruebas con tamaños de datos representativos