Skip to main content

Описание

Отличается от JSONEachRow/JSONStringsEachRow тем, что ClickHouse передаёт в потоке каждое событие как отдельный объект JSON, а также выводит информацию о ходе выполнения. Родственный формат JSONStringsEachRowWithProgress использует те же виды объектов верхнего уровня, но значения полей сериализуются в виде строк. Компактные аналоги JSONCompactEachRowWithProgress и JSONCompactStringsEachRowWithProgress используют те же виды объектов потока и имеют те же особенности, связанные с ходом выполнения, LIMIT и исключениями; однако их полезные нагрузки row / totals / min / max представляют собой массивы значений, а не именованные объекты.

Объекты потока

Каждая строка ответа представляет собой один объект JSON. Клиенты должны выбирать способ обработки в зависимости от ключа верхнего уровня: Объект rows_before_limit_at_least отправляется, когда запрос содержит LIMIT, даже если ограничение не отбросило ни одной строки. Это нижняя оценка числа строк, которые были бы получены без LIMIT (с тем же смыслом, что и в JSON); клиенты не должны считать её подтверждением того, что строки были отброшены. meta отправляется один раз перед первым объектом row, но объект progress может поступить раньше meta. Объект exception верхнего уровня отправляется по HTTP только при http_write_exception_in_output_format=1; в противном случае ошибка передаётся на транспортном уровне. Если этот объект отправляется, он представляет собой отдельный объект верхнего уровня, а не вложенный элемент row.

Пример использования

Объект progress по-прежнему может выводиться перед meta. При работе по HTTP с http_write_exception_in_output_format=1 запрос, завершившийся ошибкой, заканчивается отдельным объектом верхнего уровня (не вложенным в row):

Настройки формата