Skip to main content

Description

Se distingue de JSONEachRow/JSONStringsEachRow en ce que ClickHouse diffuse chaque événement sous forme d’objet JSON distinct et renvoie également des informations de progression. Le format apparenté JSONStringsEachRowWithProgress utilise les mêmes types d’objets de premier niveau ; les valeurs des champs y sont sérialisées sous forme de chaînes de caractères. Les variantes compactes JSONCompactEachRowWithProgress et JSONCompactStringsEachRowWithProgress partagent les mêmes types d’objets de flux ainsi que les mêmes mises en garde concernant la progression, LIMIT et les exceptions ; leurs charges utiles row / totals / min / max sont des tableaux de valeurs et non des objets nommés.

Objets du flux

Chaque ligne de la réponse est un objet JSON. Les clients doivent aiguiller le traitement en fonction de la clé de premier niveau : L’objet rows_before_limit_at_least est émis dès que la requête contient LIMIT, même si la limite n’a écarté aucune ligne. Il s’agit d’une estimation basse du nombre de lignes qu’il y aurait eu sans LIMIT (même signification que dans JSON) ; les clients ne doivent pas y voir la preuve que des lignes ont été écartées. meta est émis une seule fois avant le premier row, mais un objet progress peut arriver avant meta. Via HTTP, l’objet exception de premier niveau n’est émis que lorsque http_write_exception_in_output_format=1 ; sinon, l’erreur est remontée par la couche de transport. Lorsqu’il est émis, il s’agit d’un objet de premier niveau distinct, et non imbriqué sous row.

Exemple d’utilisation

Un objet progress peut tout de même être émis avant meta. Avec HTTP, lorsque http_write_exception_in_output_format=1, une requête qui échoue se termine par un objet distinct de premier niveau (non imbriqué sous row) :

Paramètres du format