Сводная таблица
1. Ленивое и немедленное выполнение
pandas (Немедленное выполнение)
DataStore (ленивое выполнение)
Почему это важно
- Оптимизация запросов: Несколько операций компилируются в один SQL-запрос
- Отсечение столбцов: Считываются только нужные столбцы
- Pushdown фильтров: Фильтры применяются на стороне источника
- Эффективное использование памяти: Не загружайте данные, которые не нужны
2. Типы возвращаемых значений
pandas
DataStore
Преобразование в типы pandas
3. Триггеры выполнения
Операции с ленивым вычислением
4. Порядок строк
pandas
DataStore
rowNumberInAllBlocks()), чтобы сохранять порядок, согласованный с pandas.
Когда порядок сохраняется
- Источники в виде файлов (CSV, Parquet, JSON и т. д.)
- Источники в виде pandas DataFrame
- Операции фильтрации
- Выбор столбцов
- После явного
sort()илиsort_values() - Операции, задающие порядок (
nlargest(),nsmallest(),head(),tail())
Когда порядок может отличаться
- После агрегаций
groupby()(используйтеsort_values(), чтобы обеспечить единообразный порядок) - После
merge()/join()с некоторыми типами JOIN - В режиме производительности (
config.use_performance_mode()): порядок строк не гарантируется ни для каких операций. См. Режим производительности.
5. Параметр inplace отсутствует
pandas
DataStore
inplace=True не поддерживается. Всегда присваивайте результат:
Почему нет inplace?
- Строить запросы (отложенное вычисление)
- Обеспечивать потокобезопасность
- Упрощать отладку
- Делать код чище
6. Поддержка индексов
pandas
DataStore
Имеет значение источник DataStore
- Источник DataFrame: сохраняет индекс pandas
- Источник File: используется простой целочисленный индекс
7. Особенности сравнения
Сравнение с pandas
Использование функции equals()
8. Вывод типов
pandas
DataStore
Явное приведение типов
9. Модель памяти
pandas
DataStore
10. Сообщения об ошибках
Различные источники ошибок
- ошибки pandas: Из библиотеки pandas
- ошибки DataStore: Из chDB или ClickHouse
Советы по отладке
Чек-лист миграции
- Измените оператор import
- Удалите параметры
inplace=True - Явно добавьте
to_df()там, где требуется pandas DataFrame - Добавьте сортировку, если важен порядок строк
- Используйте
to_pandas()для сравнительных тестов - Протестируйте на репрезентативных объёмах данных