출력 포맷 설정

출력 포맷 설정 (Output format settings)

이 설정들은 ClickHouse가 데이터를 출력할 때 각 포맷의 동작을 세밀하게 조정해요. 텍스트 포맷의 출력 방식, Arrow·ORC·Parquet 같은 컬럼 포맷의 직렬화, 그리고 Native 포맷의 직렬화 방식을 제어해요.

출처: 문서

본문

이 설정들은 ClickHouse 소스에서 자동 생성됐어요.

output_format_always_write_decimal_point_in_float_and_decimal

텍스트 포맷에서 부동소수점과 Decimal 숫자에 대해 값이 정수여도 항상 소수점을 인쇄해요. 예를 들어 1 대신 1.을 출력해요.

기본적으로 비활성화돼요.

output_format_arrow_compression_method

Arrow 출력 포맷의 압축 방법. 지원 코덱: lz4_frame, zstd, none (압축 없음)

output_format_arrow_date_as_uint16

Date 값을 32비트 Arrow DATE32 타입(다시 읽으면 Date32)으로 변환하는 대신 평범한 16비트 숫자(다시 읽으면 UInt16)로 작성해요.

output_format_arrow_fixed_string_as_fixed_byte_array

FixedString 컬럼에 대해 Binary 대신 Arrow FIXED_SIZE_BINARY 타입을 사용해요.

output_format_arrow_low_cardinality_as_dictionary

LowCardinality 타입을 Dictionary Arrow 타입으로 출력하는 것을 활성화해요.

output_format_arrow_record_batch_size

ArrowArrowStream 출력 포맷의 레코드 배치당 목표 행 수. 작은 블록을 결합하면 메타데이터와 버퍼 패딩 오버헤드가 줄어들며, 특히 선택적 필터가 있는 쿼리에 유용해요.

블록은 이 목표나 에 도달할 때까지 누적돼요. 이미 행 또는 바이트 목표를 충족한 블록은 나눠지지 않고 별도로 작성돼요. 행 목표를 설정하면, 결합된 배치가 그 행 수의 두 배보다 적게 담지만, 단일 입력 블록은 더 클 수 있어요.

블록을 버퍼링하면 메모리 사용이 늘고 출력이 지연될 수 있어요. 결과가 어떤 목표에도 도달하지 않으면 ArrowStream은 쿼리가 끝날 때 첫 레코드 배치를 작성하지만, 스키마는 더 일찍 작성할 수 있어요. 두 목표를 모두 0으로 두면 블록이 도착할 때 레코드 배치를 작성해요.

0(기본값)은 행 목표를 비활성화해요. 시작 값으로 65409을 시도해 보세요.

output_format_arrow_record_batch_size_bytes

ArrowArrowStream 출력 포맷의 목표 레코드 배치 크기(누적된 블록 데이터의 바이트로 측정). 와 같은 측정을 사용해요. 이 목표나 에 도달하면 배치가 작성돼요.

LowCardinality 컬럼은 이 바이트 목표보다 훨씬 크거나 작은 Arrow 배치를 만들 수 있다는 점에 주의하세요. 이 활성화되지 않으면 반복 값이 출력에서 확장돼요. 필터링된 블록도 큰 딕셔너리를 유지할 수 있으므로, 행이 매우 적은 블록도 목표에 도달해 별도로 작성될 수 있어요. 이러한 컬럼에는 을 사용해 행 수를 제어하고 바이트 목표를 0으로 설정하세요.

블록을 버퍼링하면 메모리 사용이 늘고 첫 레코드 배치가 쿼리 끝까지 지연될 수 있어요. 두 목표를 모두 0으로 두면 블록이 도착할 때 레코드 배치를 작성해요.

0(기본값)은 바이트 목표를 비활성화해요. 시작 값으로 1048576(1 MiB)을 시도해 보세요.

output_format_arrow_string_as_string

String 컬럼에 대해 Binary 대신 Arrow String 타입을 사용해요.

output_format_arrow_unsupported_types

일류(first-class) Arrow 매핑이 없는 타입(예: JSON, Dynamic, QBit, AggregateFunction)의 컬럼에 대해 무엇을 쓸지:

  • throw — 쿼리를 거부;
  • text — 행당 하나의 텍스트 형식 값(CAST(col AS String)이 만드는 것), Arrow Utf8 컬럼으로;
  • binary — 각 값의 이진 표현, Arrow Binary 컬럼으로(RowBinary와 같은 값별 인코딩).

AggregateFunction 컬럼은 그 텍스트 형식이 텍스트가 아니라 원시 집계 상태이므로, Arrow Utf8 컬럼이 유효한 UTF-8을 담아야 하기 때문에 text 모드에서도 Binary예요. 읽을 수 있는 값을 얻으려면 finalizeAggregation을 사용하세요.

Utf8 컬럼에 작성된 값은 유효한 UTF-8을 담도록 만들어지고, 각 무효 시퀀스는 U+FFFD로 대체돼요. 이것은 읽는 쪽이 어차피 텍스트로 해석할 수 없었을 텍스트에만 영향을 줘요 — 예를 들어 임의 바이트의 String을 담는 Dynamic. 바이트를 정확히 보존해야 하면 binary 모드를 사용하세요.

output_format_arrow_string_as_string은 이러한 컬럼에는 적용되지 않고, 실제 StringFixedString에만 적용돼요. 이는 불투명 컬럼의 Arrow 타입을 그것이 담는 인코딩에 대한 진술로 유지해요: Utf8은 텍스트 형식, Binary는 이진 형식 — 그 설정이 무엇을 말하든.

같은 것이 Dynamic에 담긴 집계 상태에도 적용돼요: 컬럼은 그 행이 무엇을 담는지에 대해 아무것도 말하지 않는 Dynamic에서 타입이 정해지고, Arrow 스키마는 어떤 값도 보이기 전에 고정되므로, 상태는 AggregateFunction 컬럼처럼 자체 Binary 컬럼을 가질 수 없어요. 따라서 text 모드에서는 손실이 돼요. binary 모드는 그것을 유지해요. Variant는 영향을 받지 않아요 — 그것은 대안을 나열하므로, 그중 AggregateFunction은 자체 Binary 자식을 얻어요.

textbinary 모두에서 필드는 Arrow 스키마에서 clickhouse.opaque 확장 이름과 원래 ClickHouse 타입 이름으로 태그가 지정돼요. 따라서 읽는 쪽이 진짜 문자열 또는 이진 컬럼과 구별할 수 있어요.

ClickHouse는 읽는 쪽이 이미 그 타입을 아는 곳에서만 태그가 명명한 타입으로 그런 컬럼을 다시 읽어요 — 테이블이 그것을 선언하거나 files3가 받는 것 같은 구조 인자이기 때문이에요. 그런 다음 Array, Tuple, Map, Nullable 안에서도 그렇게 해요. 스키마 추론은 태그를 참고하지 않으므로, 명명된 타입 없이 읽는 컬럼은 원시 페이로드를 담는 String으로 여전히 도착해요. Variant의 대안은 타입이 명명되어도 결코 다시 읽히지 않는데, 그 대안들이 형성하는 Arrow 동맹(union)이 태그를 참고하지 않고 디코딩되기 때문이에요. 작성된 데이터는 모든 경우에 다른 Arrow 리더들에 대해 잘 형성돼 있어요.

더 오래된 output_format_arrow_unsupported_types_as_binary보다 우선해요. 그것은 이 설정이 기본값으로 남겨졌을 때만 참고돼요.

output_format_arrow_unsupported_types_as_binary

변환할 수 없는 타입을 원시 이진 데이터로 출력해요. false이면 그런 타입이 예외를 일으켜요.

output_format_arrow_unsupported_types로 대체됨: 0throw, 1binary를 뜻해요. output_format_arrow_unsupported_types가 명시적으로 설정되지 않았을 때만 참고돼요.

output_format_arrow_use_64_bit_indexes_for_dictionary

Arrow 포맷의 딕셔너리 인덱스에 항상 64비트 정수를 사용해요.

output_format_arrow_use_signed_indexes_for_dictionary

Arrow 포맷의 딕셔너리 인덱스에 부호 있는 정수를 사용해요.

output_format_avro_codec

출력에 사용되는 압축 코덱. 가능한 값: 'null', 'deflate', 'snappy', 'zstd'.

output_format_avro_confluent_subject

AvroConfluent 출력 포맷: 스키마가 Confluent Schema Registry에 등록되는 주체 이름. AvroConfluent 출력을 쓸 때 필요해요.

output_format_avro_rows_in_file

(저장이 허용한다면) 파일의 최대 행 수.

output_format_avro_string_column_pattern

Avro 포맷: AVRO string으로 선택할 String 컬럼의 정규식.

output_format_avro_sync_interval

바이트 단위 동기화 간격.

output_format_binary_encode_types_in_binary_format

RowBinaryWithNamesAndTypes 출력 포맷에서 타입 이름 대신 이진 형식으로 데이터 타입을 작성해요.

output_format_binary_write_json_as_string

RowBinary 출력 포맷에서 JSON 데이터 타입의 값을 JSON 문자열 값으로 작성해요.

output_format_bson_string_as_string

String 컬럼에 대해 Binary 대신 BSON String 타입을 사용해요.

output_format_compression_level

쿼리 출력이 압축될 때의 기본 압축 수준. SELECT 쿼리가 INTO OUTFILE을 가지거나 테이블 함수 file, url, hdfs, s3, azureBlobStorage에 쓸 때 적용돼요.

가능한 값: 1부터 22까지

output_format_compression_zstd_window_log

출력 압축 방법이 zstd일 때 사용할 수 있어요. 0보다 크면, 이 설정이 압축 창 크기(2의 거듭제곱)를 명시적으로 설정하고 zstd 압축의 장거리(long-range) 모드를 활성화해요. 더 나은 압축 비율을 달성하는 데 도움이 될 수 있어요.

가능한 값: 음이 아닌 수. 값이 너무 작거나 너무 크면 zstdlib가 예외를 던진다는 점에 주의하세요. 일반적인 값은 20(창 크기 = 1MB)부터 30(창 크기 = 1GB)까지예요.

output_format_csv_crlf_end_of_line

true로 설정하면, CSV 포맷의 줄 끝이 \n 대신 \r\n이 돼요.

output_format_csv_header_serialize_tuple_into_separate_columns

이 활성화되면, CSVWithNamesCSVWithNamesAndTypes의 헤더 행이 각 맨몸 Tuple 컬럼을 리프 필드로 펼쳐요(점 이름 t.a, t.b, 리프 타입 이름). 헤더는 데이터와 같은 수의 컬럼을 가져요. Nullable(Tuple) 컬럼은 결코 펼쳐지지 않고(데이터는 단일 CSV 필드로 유지), 헤더는 단일 최상위 컬럼 이름과 타입을 유지해요. CustomSeparated*의 경우 이 펼침은 format_custom_escaping_rule = 'CSV'이고 format_custom_field_delimiterformat_csv_delimiter와 같은 단일 문자일 때만 적용돼요. 그렇지 않으면(예: 기본 탭 구분자 또는 format_custom_field_delimiter = '|') 헤더가 펼쳐지지 않은 채 유지되어 여전히 데이터와 일치해요. 이전 동작(헤더가 단일 최상위 Tuple 이름과 타입을 유지)으로 되돌리려면 0으로 설정하세요.

참고: 펼쳐진 헤더는 input_format_with_names_use_header = 1일 때 이름으로 Tuple로 다시 읽히지 않아요. 그런 데이터를 Tuple로 다시 읽으려면, 출력에서 이 설정을 0으로 설정하거나, input_format_with_names_use_header = 0으로 읽으세요(*WithNamesAndTypes 포맷 CSVWithNamesAndTypesCustomSeparatedWithNamesAndTypes의 경우 input_format_with_types_use_header = 0도 — 펼쳐진 타입 행이 그렇지 않으면 단일 최상위 Tuple 입력 필드에 대해 검증되어 거부되기 때문).

output_format_csv_serialize_tuple_into_separate_columns

true로 설정하면, CSV 포맷의 맨몸 Tuple 컬럼이 별도 컬럼으로 직렬화돼요(즉, 튜플에서의 중첩이 손실돼요).

이 펼침은 맨몸 Tuple에만 적용돼요. Nullable(Tuple)은 이 설정과 무관하게 항상 단일 CSV 필드로 직렬화돼요(NULL과 비-NULL 행이 같은 수의 필드를 차지하도록).

output_format_decimal_trailing_zeros

Decimal 값을 인쇄할 때 후행 0을 출력해요. 예를 들어 1.23 대신 1.230000.

기본적으로 비활성화돼요.

output_format_float_precision

0이 아닐 때, 부동소수점 출력(Float32, Float64, BFloat16)을 소수점 뒤 최대 이 자릿수로 포맷해요(후행 0은 제거). 0(기본값)일 때는 가장 짧은 왕복 표현을 사용해요.

고정 표기법에 너무 큰 값, 그리고 요청된 정밀도로 반올림하면 모든 유효 자릿수를 잃을 정도로 크기가 작은 값(가수가 ±0이 됨)은 대신 과학 표기법으로 내보내져요. 이러한 폴백 경우 가수가 요청된 소수 자릿수보다 더 많이 담을 수 있어요.

유효 범위: 0부터 100까지.

output_format_image_height

PNG 같은 이미지 출력 포맷의 출력 이미지 높이(픽셀).

기본값: 1024.

output_format_image_streaming_animation

PNG 같은 이미지 출력 포맷의 경우, 모든 프레임을 쿼리 끝까지 메모리에 버퍼링하는 대신 t 컬럼의 다음 값을 보는 즉시 애니메이션의 각 프레임을 작성해요.

한 프레임만 메모리에 유지되고, 프레임은 쿼리가 실행되는 동안 출력에 도달해요. 그 대신 t의 값은 비감소여야 하고, 그렇지 않으면 쿼리가 예외를 던져요. 애니메이션의 헤더를 작성할 때 프레임 수를 알 수 없으므로, 선언된 프레임 수는 정확한 값이 아니라 상한이에요. 브라우저는 그런 파일을 재생하지만, 선언된 개수를 신뢰하는 디코더는 마지막 실제 프레임 후에 오류를 보고해요.

기본값: false.

output_format_image_terminal_mode

PNG 같은 이미지 출력 포맷의 경우, 원시 이미지 바이트를 쓰는 대신 인라인 이미지 프로토콜을 사용해 이미지를 터미널에 직접 출력해요.

가능한 값:

  • "" (빈 값) — 원시 이미지 바이트 작성(기본값).
  • iterm — iTerm2 인라인 이미지 프로토콜 사용.
  • kitty — Kitty 그래픽스 프로토콜 사용.
  • sixel — Sixel 프로토콜 사용.
  • auto — 출력이 터미널이면 그 기능을 감지해 iterm, kitty, sixel을(이 순서로) 사용하고, 그렇지 않으면 원시 이미지 바이트 작성.

기본값: "" (빈 값).

output_format_image_time_divisor_seconds

PNG 같은 이미지 출력 포맷의 t 컬럼 시간 단위의 분모(초).

output_format_image_time_multiplier_seconds 참조.

기본값: 60.

output_format_image_time_multiplier_seconds

PNG 같은 이미지 출력 포맷의 t 컬럼 시간 단위의 분자(초).

t 컬럼의 존재는 포맷이 애니메이션을 만들게 하는데, 여기서 t는 프레임의 상대 시간 오프셋이에요. t의 한 단위는 output_format_image_time_multiplier_seconds / output_format_image_time_divisor_seconds 초에 해당해요. 기본값(160)에서는 t의 한 단위가 1/60초예요.

기본값: 1.

output_format_image_width

PNG 같은 이미지 출력 포맷의 출력 이미지 너비(픽셀).

기본값: 1024.

output_format_json_array_of_rows

JSONEachRow 포맷에서 모든 행을 JSON 배열로 출력하는 기능을 활성화해요.

가능한 값:

  • 1 — ClickHouse가 모든 행을 배열로 출력, 각 행은 JSONEachRow 포맷.
  • 0 — ClickHouse가 각 행을 JSONEachRow 포맷으로 별도 출력.

설정이 활성화된 쿼리 예시

쿼리:

SET output_format_json_array_of_rows = 1;
SELECT number FROM numbers(3) FORMAT JSONEachRow;

결과:

[
{"number":"0"},
{"number":"1"},
{"number":"2"}
]

설정이 비활성화된 쿼리 예시

쿼리:

SET output_format_json_array_of_rows = 0;
SELECT number FROM numbers(3) FORMAT JSONEachRow;

결과:

{"number":"0"}
{"number":"1"}
{"number":"2"}

output_format_json_escape_forward_slashes

JSON 출력 포맷에서 문자열 출력의 정방향 슬래시 이스케이프를 제어해요. JavaScript와의 호환을 위한 것이에요. 항상 이스케이프되는 백슬래시와 혼동하지 마세요.

기본적으로 활성화돼요.

output_format_json_map_as_array_of_tuples

맵 컬럼을 튜플의 JSON 배열로 직렬화해요.

기본적으로 비활성화돼요.

output_format_json_named_tuples_as_objects

명명된 튜플 컬럼을 JSON 객체로 직렬화해요.

기본적으로 활성화돼요.

output_format_json_pretty_print

이 설정은 JSON 출력 포맷을 사용할 때 데이터 배열 안에서 Tuples, Maps, Arrays 같은 중첩 구조가 어떻게 표시되는지 결정해요.

예를 들어, 다음과 같은 출력 대신:

"data":
[
  {
    "tuple": {"a":1,"b":2,"c":3},
    "array": [1,2,3],
    "map": {"a":1,"b":2,"c":3}
  }
],

출력은 다음과 같이 포맷돼요:

"data":
[
    {
        "tuple": {
            "a": 1,
            "b": 2,
            "c": 3
        },
        "array": [
            1,
            2,
            3
        ],
        "map": {
            "a": 1,
            "b": 2,
            "c": 3
        }
    }
],

기본적으로 활성화돼요.

output_format_json_quote_64bit_floats

64비트 실수가 JSON* 포맷으로 출력될 때 큰따옴표 인용을 제어해요.

기본적으로 비활성화돼요.

output_format_json_quote_64bit_integers

JSON 포맷에서 64비트 이상의 정수(UInt64 또는 Int128처럼)가 출력될 때의 인용을 제어해요. 그런 정수는 기본적으로 큰따옴표로 감싸져요. 이 동작은 대부분의 JavaScript 구현과 호환돼요.

가능한 값:

  • 0 — 정수는 큰따옴표 없이 출력.
  • 1 — 정수는 큰따옴표로 감쌈.

output_format_json_quote_decimals

JSON 출력 포맷에서 소수의 인용을 제어해요.

기본적으로 비활성화돼요.

output_format_json_quote_denormals

JSON 출력 포맷에서 +nan, -nan, +inf, -inf 출력을 활성화해요.

가능한 값:

  • 0 — 비활성화.
  • 1 — 활성화.

예시

다음 테이블 account_orders를 고려해 보세요:

┌─id─┬─name───┬─duration─┬─period─┬─area─┐
│  1 │ Andrew │       20 │      0 │  400 │
│  2 │ John   │       40 │      0 │    0 │
│  3 │ Bob    │       15 │      0 │ -100 │
└────┴────────┴──────────┴────────┴──────┘

output_format_json_quote_denormals = 0이면, 쿼리가 출력에서 null 값을 반환해요:

SELECT area/period FROM account_orders FORMAT JSON;
{
        "meta":
        [
                {
                        "name": "divide(area, period)",
                        "type": "Float64"
                }
        ],

        "data":
        [
                {
                        "divide(area, period)": null
                },
                {
                        "divide(area, period)": null
                },
                {
                        "divide(area, period)": null
                }
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.003648093,
                "rows_read": 3,
                "bytes_read": 24
        }
}

output_format_json_quote_denormals = 1이면, 쿼리가 반환하는 것:

{
        "meta":
        [
                {
                        "name": "divide(area, period)",
                        "type": "Float64"
                }
        ],

        "data":
        [
                {
                        "divide(area, period)": "inf"
                },
                {
                        "divide(area, period)": "-nan"
                },
                {
                        "divide(area, period)": "-inf"
                }
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.000070241,
                "rows_read": 3,
                "bytes_read": 24
        }
}

output_format_json_skip_null_value_in_named_tuples

명명된 튜플 컬럼을 JSON 객체로 직렬화할 때 null 값을 가진 키 값 쌍을 건너뛰어요. output_format_json_named_tuples_as_objects가 true일 때만 유효해요.

output_format_json_validate_utf8

JSON 출력 포맷에서 UTF-8 시퀀스 검증을 제어해요. JSON/JSONCompact/JSONColumnsWithMetadata 포맷에는 영향을 주지 않아요, 그들은 항상 UTF-8을 검증해요.

기본적으로 비활성화돼요.

output_format_markdown_escape_special_characters

활성화되면, Markdown에서 특수 문자를 이스케이프해요.

Common Mark는 백슬래시로 이스케이프할 수 있는 다음 특수 문자를 정의해요:

! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

가능한 값:

  • 0 — 비활성화.
  • 1 — 활성화.

output_format_msgpack_uuid_representation

MsgPack 포맷에서 UUID를 출력하는 방식.

output_format_native_encode_types_in_binary_format

Native 출력 포맷에서 타입 이름 대신 이진 형식으로 데이터 타입을 작성해요.

output_format_native_use_flattened_dynamic_and_json_serialization

JSONDynamic 컬럼의 데이터를 펼쳐진(flattened) 형식(모든 타입/path를 별도 하위 컬럼으로)으로 작성해요.

output_format_native_write_json_as_string

JSON 컬럼의 데이터를 기본 네이티브 JSON 직렬화 대신 JSON 문자열을 담는 String 컬럼으로 작성해요.

output_format_orc_compression_block_size

ORC 출력 포맷의 압축 블록 크기(바이트).

output_format_orc_compression_method

ORC 출력 포맷의 압축 방법. 지원 코덱: lz4, snappy, zlib, zstd, none (압축 없음)

output_format_orc_dictionary_key_size_threshold

ORC 출력 포맷의 문자열 컬럼에 대해, 고유 값 수가 전체 비-NULL 행 수의 이 비율보다 크면 딕셔너리 인코딩을 끄고. 그렇지 않으면 딕셔너리 인코딩을 켜요.

output_format_orc_row_index_stride

ORC 출력 포맷의 목표 행 인덱스 스트라이드.

output_format_orc_string_as_string

String 컬럼에 대해 Binary 대신 ORC String 타입을 사용해요.

output_format_orc_writer_time_zone_name

ORC 작성자의 시간대 이름, 기본 ORC 작성자의 시간대는 GMT예요.

output_format_parallel_formatting

데이터 포맷의 병렬 포맷팅을 활성화 또는 비활성화해요. TSV, TSKV, CSV, JSONEachRow 포맷에 대해서만 지원돼요.

가능한 값:

  • 1 — 활성화.
  • 0 — 비활성화.

output_format_parquet_batch_size

이 행 수마다 페이지 크기를 확인해요. 평균 값 크기가 몇 KB 이상인 컬럼이 있으면 줄이는 것을 고려하세요.

output_format_parquet_bloom_filter_bits_per_value

parquet bloom filter의 각 고유 값에 사용할 대략적인 비트 수. 추정 오탐지율:

  • 6 비트 — 10%
  • 10.5 비트 — 1%
  • 16.9 비트 — 0.1%
  • 26.4 비트 — 0.01%
  • 41 비트 — 0.001%

output_format_parquet_bloom_filter_flush_threshold_bytes

parquet 파일에서 bloom filter를 놓을 위치. bloom filter는 대략 이 크기의 그룹으로 작성돼요. 특히:

  • 0이면, 각 행 그룹의 bloom filter가 그 행 그룹 직후에 작성돼요.
  • 모든 bloom filter의 총 크기보다 크면, 모든 행 그룹의 bloom filter가 메모리에 누적된 다음 파일 끝 근처에 함께 작성돼요.
  • 그렇지 않으면, bloom filter가 메모리에 누적되고 총 크기가 이 값을 넘을 때마다 작성돼요.

output_format_parquet_compression_method

Parquet 출력 포맷의 압축 방법. 지원 코덱: snappy, lz4, brotli, zstd, gzip, none (압축 없음)

output_format_parquet_data_page_size

압축 전 목표 페이지 크기(바이트).

output_format_parquet_date_as_uint16

Date 값을 32비트 parquet DATE 타입(다시 읽으면 Date32)으로 변환하는 대신 평범한 16비트 숫자(다시 읽으면 UInt16)로 작성해요.

output_format_parquet_datetime_as_uint32

DateTime 값을 밀리초로 변환하는 대신(다시 읽으면 DateTime64(3)) 원시 unix 타임스탬프(다시 읽으면 UInt32)로 작성해요.

output_format_parquet_enum_as_byte_array

enum을 parquet 물리 타입: BYTE_ARRAY와 논리 타입: ENUM으로 작성해요.

output_format_parquet_fixed_string_as_fixed_byte_array

FixedString 컬럼에 대해 Binary 대신 Parquet FIXED_LEN_BYTE_ARRAY 타입을 사용해요.

output_format_parquet_geometadata

parquet 메타데이터에 geo 컬럼에 대한 정보를 작성하고 WKB 형식으로 컬럼을 인코딩하는 것을 허용해요.

output_format_parquet_max_dictionary_size

딕셔너리 크기가 이 바이트 수보다 커지면, 딕셔너리 없이 인코딩으로 전환해요. 딕셔너리 인코딩을 비활성화하려면 0으로 설정하세요.

output_format_parquet_parallel_encoding

Parquet 인코딩을 여러 스레드에서 수행해요.

output_format_parquet_row_group_size

행 단위 목표 행 그룹 크기.

output_format_parquet_row_group_size_bytes

압축 전 바이트 단위 목표 행 그룹 크기.

output_format_parquet_string_as_string

String 컬럼에 대해 Binary 대신 Parquet String 타입을 사용해요.

output_format_parquet_wide_integer_as_decimal

Int128, UInt128, Int256, UInt256 값을 표준 준수 Parquet DECIMAL 값(빅-엔디언 바이트 순서)으로 작성해요. 기본값은 이전 ClickHouse 버전과의 호환을 위해 레거시 비주석 리틀-엔디언 FIXED_LEN_BYTE_ARRAY 표현을 유지해요. 십진 표현은 상호 운용 가능한 숫자 통계를 가능하게 하지만, 일부 Parquet 리더는 38 또는 76을 초과하는 정밀도를 지원하지 않아요.

output_format_parquet_write_bloom_filter

parquet 파일에 bloom filter를 작성해요.

output_format_parquet_write_checksums

parquet 페이지 헤더에 crc32 체크섬을 넣어요.

output_format_parquet_write_page_index

parquet 파일에 컬럼 인덱스와 오프셋 인덱스(즉, 읽기 시 필터 푸시다운에 사용될 수 있는 각 데이터 페이지에 대한 통계)를 작성해요.

output_format_pretty_color

Pretty 포맷에서 ANSI 이스케이프 시퀀스를 사용해요. 0 — 비활성화, 1 — 활성화, 'auto' — 터미널이면 활성화.

output_format_pretty_display_footer_column_names

테이블 행이 많으면 푸터에 컬럼 이름을 표시해요.

가능한 값:

  • 0 — 푸터에 컬럼 이름이 표시되지 않아요.
  • 1 — 행 수가 output_format_pretty_display_footer_column_names_min_rows(기본 50)이 설정한 임계값 이상이면 푸터에 컬럼 이름이 표시돼요.

예시

쿼리:

SELECT *, toTypeName(*) FROM (SELECT * FROM system.numbers LIMIT 1000);

결과:

      ┌─number─┬─toTypeName(number)─┐
   1. │      0 │ UInt64             │
   2. │      1 │ UInt64             │
   3. │      2 │ UInt64             │
   ...
 999. │    998 │ UInt64             │
1000. │    999 │ UInt64             │
      └─number─┴─toTypeName(number)─┘

output_format_pretty_display_footer_column_names_min_rows

output_format_pretty_display_footer_column_names이 활성화되면 컬럼 이름이 있는 푸터가 표시될 최소 행 수를 설정해요.

output_format_pretty_fallback_to_vertical

활성화되고, 테이블이 넓지만 짧으면 Pretty 포맷이 Vertical 포맷처럼 출력해요. 이 동작의 세밀한 조정은 output_format_pretty_fallback_to_vertical_max_rows_per_chunk와 output_format_pretty_fallback_to_vertical_min_table_width를 참조하세요.

output_format_pretty_fallback_to_vertical_max_rows_per_chunk

Vertical 포맷으로의 폴백(위 output_format_pretty_fallback_to_vertical 참조)은 청크의 레코드 수가 지정된 값 이하일 때만 활성화돼요.

output_format_pretty_fallback_to_vertical_min_columns

Vertical 포맷으로의 폴백(위 output_format_pretty_fallback_to_vertical 참조)은 컬럼 수가 지정된 값보다 클 때만 활성화돼요.

output_format_pretty_fallback_to_vertical_min_table_width

Vertical 포맷으로의 폴백(위 output_format_pretty_fallback_to_vertical 참조)은 테이블의 컬럼 길이 합계가 최소 지정 값 이상이거나, 적어도 하나의 값이 줄바꿈 문자를 포함할 때만 활성화돼요.

output_format_pretty_glue_chunks

Pretty 포맷으로 렌더링된 데이터가 여러 청크로 도착했는데, 지연 후의 다음 청크가 이전 것과 같은 컬럼 너비를 가지면, ANSI 이스케이프 시퀀스로 이전 줄로 돌아가 이전 청크의 푸터를 덮어쓰고 새 청크의 데이터로 계속해요. 이렇게 하면 결과가 시각적으로 더 보기 좋아져요.

0 — 비활성화, 1 — 활성화, 'auto' — 터미널이면 활성화.

output_format_pretty_grid_charset

그리드 테두리 인쇄용 문자셋. 사용 가능한 문자셋: ASCII, UTF-8 (기본).

대화형 모드에서, clickhouse-client는 터미널이 UTF-8을 지원하지 않으면(LC_ALL, LC_CTYPE, LANG 환경 변수로 결정) 이 설정이 명시적으로 지정되지 않을 때 자동으로 ASCII로 전환해요.

output_format_pretty_highlight_digit_groups

활성화되고 출력이 터미널이면, 천, 백만 등에 해당하는 각 자릿수를 밑줄로 강조해요.

output_format_pretty_highlight_trailing_spaces

활성화되고 출력이 터미널이면, 후행 공백을 회색과 밑줄로 강조해요.

output_format_pretty_max_column_name_width_cut_to

컬럼 이름이 너무 길면 이 길이로 잘라요. 컬럼은 output_format_pretty_max_column_name_width_cut_to 더하기 output_format_pretty_max_column_name_width_min_chars_to_cut보다 길면 잘려요.

output_format_pretty_max_column_name_width_min_chars_to_cut

컬럼 이름이 너무 길면 잘라낼 최소 문자 수. 컬럼은 output_format_pretty_max_column_name_width_cut_to 더하기 output_format_pretty_max_column_name_width_min_chars_to_cut보다 길면 잘려요.

output_format_pretty_max_column_pad_width

Pretty 포맷에서 컬럼의 모든 값을 패딩할 최대 너비.

output_format_pretty_max_rows

Pretty 포맷의 행 제한.

output_format_pretty_max_value_width

Pretty 포맷에서 표시할 값의 최대 너비. 더 크면 잘려요. 값 0은 — 결코 자르지 않음을 뜻해요.

output_format_pretty_max_value_width_apply_for_single_value

블록의 단일 값이 아닐 때만 값 자르기(위 output_format_pretty_max_value_width 설정 참조)를 적용해요. 그렇지 않으면 완전히 출력하는데, SHOW CREATE TABLE 쿼리에 유용해요.

output_format_pretty_multiline_fields

활성화되면, Pretty 포맷이 테이블 셀 안의 여러 줄 필드를 렌더링해 테이블의 윤곽이 보존돼요. 아니면, 그대로 렌더링해 잠재적으로 테이블을 변형시켜요(끄는 장점은 여러 줄 값을 복사-붙여넣기하기가 더 쉬워진다는 것).

output_format_pretty_named_tuples_as_json

Pretty 포맷의 명명된 튜플이 pretty-printed JSON 객체로 출력되는지 여부를 제어해요.

output_format_pretty_row_numbers

pretty 출력 포맷에서 각 행 앞에 행 번호를 추가해요.

output_format_pretty_single_large_number_tip_threshold

블록이 이 값을(0 제외) 초과하는 단일 숫자로 구성되면 테이블 오른쪽에 읽기 쉬운 숫자 팁을 인쇄해요.

output_format_pretty_squash_consecutive_ms

다음 블록을 지정된 밀리초 동안 기다렸다가 작성 전에 이전 것에 스쿼시해요. 이것은 너무 작은 블록의 잦은 출력을 피하지만, 데이터를 스트리밍 방식으로 표시하는 것은 여전히 허용해요.

output_format_pretty_squash_max_wait_ms

이전 출력 이후 지정된 밀리초 이상 지나면 pretty 포맷에서 대기 중인 블록을 출력해요.

output_format_pretty_use_nbsp_for_padding

활성화되면, Pretty 출력 포맷의 패딩이 ASCII 공백 대신 U+00A0으로 렌더링돼요. 출력은 고정폭에서 시각적으로 동일하게 유지되지만, 일반 공백의 연속을 압축하거나 트림하는 도구에서 패딩이 살아남아요. output_format_pretty_grid_charset가 UTF-8일 때만 효과가 있어요.

output_format_protobuf_nullables_with_google_wrappers

Google 래퍼로 Nullable 컬럼을 직렬화할 때, 기본값을 빈 래퍼로 직렬화해요. 꺼지면, 기본값과 null 값은 직렬화되지 않아요.

output_format_schema

Cap'n Proto 또는 Protobuf 포맷에서 자동 생성된 스키마가 저장될 파일의 경로.

output_format_sql_insert_include_column_names

INSERT 쿼리에 컬럼 이름을 포함해요.

output_format_sql_insert_max_batch_size

하나의 INSERT 문의 최대 행 수.

output_format_sql_insert_quote_names

컬럼 이름을 '`' 문자로 인용해요.

output_format_sql_insert_table_name

출력 INSERT 쿼리의 테이블 이름.

output_format_sql_insert_use_replace

INSERT 대신 REPLACE 문을 사용해요.

output_format_trim_fixed_string

텍스트 출력 포맷에서 FixedString 값의 후행 null 바이트를 잘라내요. 예를 들어 toFixedString('John', 8)John\0\0\0\0 대신 John으로 인쇄돼요.

output_format_tsv_crlf_end_of_line

true로 설정하면, TSV 포맷의 줄 끝이 \n 대신 \r\n이 돼요.

output_format_values_escape_quote_with_quote

true이면 '''로 이스케이프하고, 아니면 \'로 인용해요.

output_format_write_statistics

적절한 출력 포맷에서 읽은 행, 바이트, 경과 시간에 대한 통계를 작성해요.

더 알아보기 (Learn more)