Перейти к основному содержимому
Перейти к основному содержимому

Установка 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 (Пользовательские функции)

Некоторые заметки о декораторе chDB Python UDF (Пользовательская функция).

  1. Функция должна быть без состояния. Поддерживаются только UDF, не UDAF (Пользовательские функции агрегации).
  2. Тип возврата по умолчанию - String. Если вы хотите изменить тип возврата, вы можете передать его в качестве аргумента. Тип возврата должен быть одним из следующих.
  3. Функция должна принимать аргументы типа String. Поскольку входные данные разделены табуляцией, все аргументы являются строками.
  4. Функция будет вызываться для каждой строки входных данных. Пример:
  5. Функция должна быть чистой функцией Python. Вы должны импортировать все модули Python, используемые внутри функции.
  6. Используемый интерпретатор Python такой же, как и тот, который используется для запуска скрипта. Вы можете получить его из sys.executable.

смотрите также: test_udf.py.

Движок таблиц Python

Запрос по Pandas DataFrame

Запрос по Arrow Table

Запрос по экземпляру класса chdb.PyReader

  1. Вы должны наследовать класс chdb.PyReader и реализовать метод read.
  2. Метод read должен:
    1. возвращать список списков, первая размерность - столбец, вторая размерность - строка, порядок столбцов должен совпадать с первым аргументом col_names метода read.
    2. возвращать пустой список, когда больше нет данных для чтения.
    3. иметь состояние, курсор должен обновляться в методе read.
  3. Метод get_schema может быть реализован для возврата схемы таблицы. Прототип: def get_schema(self) -> List[Tuple[str, str]]:, возвращаемое значение - список кортежей, каждый кортеж содержит имя столбца и тип столбца. Тип столбца должен быть одним из следующих.

Смотрите также: test_query_py.py.

Ограничения

  1. Поддерживаемые типы столбцов: pandas.Series, pyarrow.array, chdb.PyReader
  2. Поддерживаемые типы данных: Int, UInt, Float, String, Date, DateTime, Decimal
  3. Тип Python Object будет преобразован в String
  4. Производительность Pandas DataFrame является лучшей, Arrow Table лучше, чем PyReader

Для получения дополнительных примеров смотрите examples и tests.