JSON 형식
JSON 형식
JSON 형식은 데이터를 JSON 형식으로 읽고 출력해요. 출력은 meta(컬럼 이름과 타입), data(데이터 표), rows(전체 행 수), rows_before_limit_at_least, statistics, totals, extremes 같은 구조를 반환합니다. JavaScript 호환성을 위해 일부 문자를 추가 이스케이프해요.
출처: 문서
본문
| Input | Output | Alias |
|---|---|---|
| ✔ | ✔ |
설명 (Description)
JSON 형식은 데이터를 JSON 형식으로 읽고 출력합니다. JSON 형식은 다음을 반환합니다:
| Parameter | Description |
|---|---|
| meta | 컬럼 이름과 타입. |
| data | 데이터 표 |
| rows | 출력된 전체 행 수. |
| rows_before_limit_at_least | LIMIT이 없었다면 나왔을 행 수의 하한 추정. 쿼리에 LIMIT이 포함된 경우에만 출력. 이 추정은 쿼리 파이프라인에서 limit 변환 전에 처리된 데이터 블록에서 계산되지만, 이후 limit 변환에 의해 버려질 수 있습니다. 블록이 쿼리 파이프라인의 limit 변환에 도달하지 못하면 추정에 참여하지 않습니다. |
| statistics | elapsed , rows_read , bytes_read 같은 통계. |
| totals | 총계 값(WITH TOTALS 사용 시). |
| extremes | 극단값(extremes가 1로 설정된 경우). |
JSON 타입은 JavaScript와 호환됩니다. 이를 보장하기 위해 일부 문자가 추가로 이스케이프됩니다:
- 슬래시
/는\/로 이스케이프됩니다. - 일부 브라우저를 깨뜨리는 대체 줄바꿈
U+2028과U+2029는\uXXXX로 이스케이프됩니다. - ASCII 제어 문자는 이스케이프됩니다: 백스페이스, 폼 피드, 줄 바꿈, 캐리지 리턴, 가로 탭이
\b,\f,\n,\r,\t로 대체되고, 00-1F 범위의 나머지 바이트는\uXXXX시퀀스를 사용합니다. - 잘못된 UTF-8 시퀀스는 대체 문자 �로 변경되어 출력 텍스트가 유효한 UTF-8 시퀀스로 구성됩니다.
JavaScript 호환성을 위해 Int64와 UInt64 정수는 기본적으로 큰따옴표로 감싸집니다. 따옴표를 제거하려면 output_format_json_quote_64bit_integers 구성 매개변수를 0으로 설정할 수 있어요.
ClickHouse는 NULL을 지원하며, JSON 출력에서는 null로 표시됩니다. 출력에서 +nan, -nan, +inf, -inf 값을 활성화하려면 output_format_json_quote_denormals를 1로 설정하세요.
사용 예시 (Example usage)
예시:
SELECT SearchPhrase, count() AS c FROM test.hits GROUP BY SearchPhrase WITH TOTALS ORDER BY c DESC LIMIT 5 FORMAT JSON
{
"meta":
[
{
"name": "num",
"type": "Int32"
},
{
"name": "str",
"type": "String"
},
{
"name": "arr",
"type": "Array(UInt8)"
}
],
"data":
[
{
"num": 42,
"str": "hello",
"arr": [0,1]
},
{
"num": 43,
"str": "hello",
"arr": [0,1,2]
},
{
"num": 44,
"str": "hello",
"arr": [0,1,2,3]
}
],
"rows": 3,
"rows_before_limit_at_least": 3,
"statistics":
{
"elapsed": 0.001137687,
"rows_read": 3,
"bytes_read": 24
}
}
형식 설정 (Format settings)
JSON 입력 형식의 경우 input_format_json_validate_types_from_metadata를 1로 설정하면 입력 데이터의 메타데이터 타입이 테이블의 해당 컬럼 타입과 비교됩니다.