Skip to main content

Description

Differs from JSONEachRow/JSONStringsEachRow in that ClickHouse streams each event as a separate JSON object and also yields progress information. All field values are serialized as strings (including complex types): for example arr is emitted as "arr":"[0,1]", not as a nested JSON array. Scalars are likewise stringified ("num":"42"). The top-level object kinds match JSONEachRowWithProgress (meta, row, progress, totals/min/max, rows_before_limit_at_least, rows_before_aggregation, and top-level exception). Follow that page for the full stream contract: a progress object may arrive before meta; rows_before_limit_at_least is a lower estimate when the query contains LIMIT (not proof rows were dropped); exception is only written on the HTTP path with http_write_exception_in_output_format=1.

Example usage

Format settings

Last modified on October 4, 2026