Skip to main content

説明

JSONEachRow/JSONStringsEachRowとは異なり、ClickHouse は各イベントを個別の JSON オブジェクトとしてストリーミングし、進捗情報も出力します。 関連する JSONStringsEachRowWithProgress フォーマットも同じ種類のトップレベルオブジェクトを使用しますが、フィールドの値は文字列としてシリアル化されます。 Compact 版の姉妹フォーマットである JSONCompactEachRowWithProgress と JSONCompactStringsEachRowWithProgress も、ストリームオブジェクトの種類は同じで、進捗・LIMIT・例外に関する注意点も共通です。ただし、row / totals / min / max のペイロードは、名前付きオブジェクトではなく値の配列になります。

ストリームオブジェクト

レスポンスの各行は 1 つの JSON オブジェクトです。クライアントはトップレベルのキーに応じて処理を振り分けてください。 rows_before_limit_at_least オブジェクトは、クエリに LIMIT が含まれていれば、実際には LIMIT によって行が除外されなかった場合でも出力されます。これは LIMIT がなかった場合の行数の下限推定値であり (意味は JSON フォーマットと同じです) 、クライアントはこれを行が除外された根拠として扱ってはいけません。 meta は最初の row の前に 1 回出力されますが、progress オブジェクトが meta より先に届く場合があります。トップレベルの exception オブジェクトが出力されるのは、HTTP 経由で http_write_exception_in_output_format=1 が指定されている場合のみです。それ以外の場合、エラーはトランスポート層を通じて通知されます。出力される場合は row の下にネストされず、独立したトップレベルのオブジェクトとなります。

使用例

meta より前に progress オブジェクトが出力される場合もあります。HTTP 経由で http_write_exception_in_output_format=1 が設定されている場合、失敗したクエリの出力は、(row の下にネストされない) 独立したトップレベルのオブジェクトで終わります。

フォーマット設定