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+2028U+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로 설정하면 입력 데이터의 메타데이터 타입이 테이블의 해당 컬럼 타입과 비교됩니다.

더 알아보기 (Learn more)