Установка chDB для Python
Требования
Python 3.8+ на macOS и Linux (x86_64 и ARM64)
Установка
Использование
Пример CLI:
Пример файла на Python:
Запросы могут возвращать данные в любом поддерживаемом формате, а также в формате Dataframe
и Debug
.
Репозиторий на GitHub
Вы можете найти репозиторий GitHub для проекта по адресу chdb-io/chdb.
Ввод данных
Доступные методы для работы с форматами данных на диске и в памяти:
Запрос на файле (Parquet, CSV, JSON, Arrow, ORC и 60+)
Вы можете выполнять SQL запросы и возвращать данные в нужном формате.
Работа с Parquet или CSV
Вывод в формате Pandas DataFrame
Запрос на таблице (Pandas DataFrame, Parquet файл/байты, Arrow байты)
Запрос на Pandas DataFrame
Запрос с состоянием сеанса
Сессии сохранят состояние запроса. Все состояния DDL и DML будут храниться в каталоге. Путь к каталогу можно передать в качестве аргумента. Если он не передан, будет создан временный каталог.
Если путь не указан, временный каталог будет удален, когда объект Session будет удален. В противном случае путь будет сохранен.
Обратите внимание, что база данных по умолчанию - это _local
, а движок по умолчанию - Memory
, что означает, что все данные будут храниться в памяти. Если вы хотите хранить данные на диске, вам следует создать другую базу данных.
Смотрите также: test_stateful.py.
Запрос с Python DB-API 2.0
Запрос с UDF (Пользовательские Определенные Функции)
Некоторые примечания по декоратору UDF (Пользовательская Определенная Функция) для chDB.
- Функция должна быть статeless. Поддерживаются только UDF, не UDAF (Пользовательские Определенные Агрегатные Функции).
- Тип возвращаемого значения по умолчанию - String. Если вы хотите изменить тип возвращаемого значения, вы можете передать его в качестве аргумента. Тип возвращаемого значения должен быть одним из следующих.
- Функция должна принимать аргументы типа String. Поскольку входной формат - TabSeparated, все аргументы строковые.
- Функция будет вызываться для каждой строки ввода. Например:
- Функция должна быть чистой функцией Python. Вы должны импортировать все модули Python, используемые внутри функции.
- Используемый интерпретатор Python такой же, как и тот, который использовался для запуска скрипта. Вы можете получить его из
sys.executable
.
Смотрите также: test_udf.py.
Движок таблиц Python
Запрос на Pandas DataFrame
Запрос на Arrow Table
Запрос на экземпляре класса chdb.PyReader
- Вы должны унаследовать класс chdb.PyReader и реализовать метод
read
. - Метод
read
должен:- возвращать список списков, первая размерность - колонка, вторая - строка, порядок колонок должен быть таким же, как и первый аргумент
col_names
методаread
. - возвращать пустой список, когда больше нет данных для чтения.
- быть stateful, курсор должен обновляться в методе
read
.
- возвращать список списков, первая размерность - колонка, вторая - строка, порядок колонок должен быть таким же, как и первый аргумент
- Необязательный метод
get_schema
может быть реализован для возврата схемы таблицы. Прототип:def get_schema(self) -> List[Tuple[str, str]]:
, значение, возвращаемое функцией, - это список кортежей, каждый из которых содержит имя колонки и тип колонки. Тип колонки должен быть одним из следующих.
Смотрите также: test_query_py.py.
Ограничения
- Поддерживаемые типы колонок:
pandas.Series
,pyarrow.array
,chdb.PyReader
- Поддерживаемые типы данных: Int, UInt, Float, String, Date, DateTime, Decimal
- Тип объекта Python будет преобразован в String
- Производительность Pandas DataFrame лучшая, Arrow Table лучше, чем PyReader
Для получения дополнительных примеров смотрите examples и tests.