Сводная таблица
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()для сравнительных тестов - Протестируйте на данных репрезентативного объёма