Descripción
Se diferencia deJSONEachRow/JSONStringsEachRow en que ClickHouse transmite cada evento como un objeto JSON independiente y también devuelve información de progreso.
El formato relacionado JSONStringsEachRowWithProgress utiliza los mismos tipos de objetos de nivel superior; los valores de los campos se serializan como Strings.
Las variantes compactas JSONCompactEachRowWithProgress y JSONCompactStringsEachRowWithProgress comparten los mismos tipos de objetos del stream y las mismas salvedades sobre progreso/LIMIT/excepciones; sus cargas útiles row / totals / min / max son arrays de valores en lugar de objetos con nombre.
Objetos del stream
Cada línea de la respuesta es un objeto JSON. Los client deben determinar el tipo de cada objeto según su clave de nivel superior:
El objeto
rows_before_limit_at_least se emite siempre que la consulta contiene LIMIT, aunque el límite no haya descartado ninguna fila. Es una estimación mínima del número de filas que habría sin LIMIT (con el mismo significado que en JSON); los client no deben interpretarlo como prueba de que se hayan descartado filas.
meta se emite una sola vez antes del primer row, pero un objeto progress puede llegar antes que meta. El objeto exception de nivel superior solo se emite en la ruta HTTP cuando http_write_exception_in_output_format=1; de lo contrario, el error se notifica a través de la capa de transporte. Cuando se emite, es un objeto de nivel superior independiente, no anidado dentro de row.
Ejemplo de uso
progress antes de meta. En la ruta HTTP con http_write_exception_in_output_format=1, una consulta que falla termina con un objeto independiente de nivel superior (no anidado dentro de row):