Загрузка 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.