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

Введение в chDB

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

Настройка

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

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

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

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

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

Запрос к JSON-файлу на S3

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

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

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

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

Этот файл содержит немного более 300,000 записей.

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

осторожно

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

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

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

Или если мы хотим получить таблицу 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:

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

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

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