Загрузка 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
клаузулы, например:
Эти примеры предполагают использование формата JSONEachRow. Поддерживаются и другие общие форматы JSON, с примерами загрузки которых можно ознакомиться здесь.
Предоставленный выше пример является очень простым примером загрузки данных JSON. Для более сложного JSON, включая вложенные структуры, смотрите руководство Проектирование схемы JSON.