Загрузка JSON
В этом разделе мы предполагаем, что данные JSON находятся в формате NDJSON (JSON с разделением по строкам), известном как JSONEachRow
в ClickHouse. Это предпочтительный формат для загрузки JSON благодаря своей краткости и эффективному использованию пространства, но поддерживаются и другие для входных и выходных данных.
Рассмотрим следующий пример JSON, представляющий строку из набор данных Python PyPI:
Для загрузки этого объекта JSON в ClickHouse необходимо определить схему таблицы. Простая схема для этого показана ниже, где ключи JSON сопоставлены с именами столбцов:
Мы выбрали ключ сортировки здесь с помощью ORDER BY
. Для получения дополнительной информации о ключах сортировки и том, как их выбирать, смотрите здесь.
ClickHouse может загружать данные JSON в нескольких форматах, автоматически определяя тип по расширению и содержимому. Мы можем читать файлы JSON для вышеуказанной таблицы, используя функцию S3:
Обратите внимание, что мы не обязаны указывать формат файла. Вместо этого мы используем шаблон glob для чтения всех *.json.gz
файлов в бакете. ClickHouse автоматически определяет, что формат — это JSONEachRow
(ndjson) по расширению файла и содержимому. Формат можно явно указать через функции параметров в случае, если ClickHouse не может его обнаружить.
Вышеуказанные файлы также сжаты. Это автоматически обнаруживается и обрабатывается ClickHouse.
Для загрузки строк из этих файлов мы можем использовать INSERT INTO SELECT
:
Строки также могут быть загружены интерактивно, используя FORMAT
clause например:
Эти примеры предполагают использование формата JSONEachRow. Поддерживаются и другие распространенные форматы JSON, примеры загрузки которых приведены здесь.
Выше представлено очень простое примеры загрузки данных JSON. Для более сложного JSON, включая вложенные структуры, смотрите руководство Проектирование схемы JSON.