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

Начало работы с chDB

В этом руководстве мы начнем работать с Python-версией chDB. Сначала мы запросим JSON файл на S3, затем создадим таблицу в chDB на основе JSON файла и сделаем несколько запросов к данным. Мы также увидим, как сделать так, чтобы запросы возвращали данные в различных форматах, включая Apache Arrow и Panda, а в конце мы узнаем, как запросить Pandas DataFrames.

Настройка

Сначала давайте создадим виртуальное окружение:

Теперь установим chDB. Убедитесь, что у вас установлена версия 2.0.3 или выше:

Теперь мы установим ipython:

Мы будем использовать ipython для выполнения команд в остальной части руководства, который вы можете запустить, выполнив:

В этом руководстве мы также будем использовать Pandas и Apache Arrow, так что давайте установим и эти библиотеки:

Запрос JSON файла в S3

Теперь давайте посмотрим, как запросить JSON файл, который хранится в бакете S3. Набор данных о дизлайках на YouTube содержит более 4 миллиардов строк дизлайков на видео YouTube до 2021 года. Мы будем работать с одним из JSON файлов из этого набора данных.

Импортируем chdb:

Мы можем написать следующий запрос, чтобы описать структуру одного из JSON файлов:

Мы также можем посчитать количество строк в этом файле:

Этот файл содержит чуть более 300,000 записей.

chdb пока не поддерживает передачу параметров запроса, но мы можем извлечь путь и передать его через f-String.

осторожно

Это нормально делать с переменными, определенными в вашей программе, но не делайте это с введенными пользователем данными, иначе ваш запрос будет подвержен SQL-инъекциям.

Настройка формата вывода

Формат вывода по умолчанию — CSV, но мы можем изменить его с помощью параметра output_format. chDB поддерживает форматы данных ClickHouse, а также некоторые из собственных форматов, включая DataFrame, который возвращает Pandas DataFrame:

Или, если мы хотим получить таблицу Apache Arrow:

Создание таблицы из JSON файла

Следующим шагом давайте посмотрим, как создать таблицу в chDB. Для этого нам нужно использовать другой API, поэтому сначала импортируем его:

Затем инициализируем сессию. Если мы хотим, чтобы сессия сохранялась на диск, нам нужно указать имя директории. Если оставить его пустым, база данных будет в оперативной памяти и будет потеряна, как только мы завершим процесс Python.

Теперь создадим базу данных:

Теперь мы можем создать таблицу dislikes, основываясь на схеме из JSON файла, используя технику CREATE...EMPTY AS. Мы используем настройку schema_inference_make_columns_nullable, чтобы типы колонок не стали все Nullable.

Затем мы можем использовать оператор DESCRIBE, чтобы проверить схему:

Теперь давайте заполним эту таблицу:

Мы также можем сделать оба этих шага за один раз, используя технику CREATE...AS. Создадим другую таблицу с использованием этой техники:

Запрос таблицы

Наконец, давайте запросим таблицу:

Предположим, мы затем добавляем дополнительную колонку в DataFrame, чтобы вычислить соотношение лайков к дизлайкам. Мы можем написать следующий код:

Запрос Pandas DataFrame

Теперь мы можем запросить этот DataFrame из chDB:

Вы также можете узнать больше о запросах к Pandas DataFrames в Руководстве разработчика по запросам Pandas.

Следующие шаги

Надеюсь, это руководство дало вам хорошее представление о chDB. Чтобы узнать больше о том, как его использовать, ознакомьтесь с следующими руководствами разработчика: