aggregate_function_input_format
입력 형식이AggregateFunction 타입의 컬럼을 읽는 방식입니다.
가능한 값:
state— 출력 형식이 기록하는 형태 그대로의, 집계 함수의 직렬화된 상태입니다(기본값).value— 집계 함수 인수의 값이며, 인수가 여러 개이면 인수들의 tuple입니다. 이 값이 집계되어 상태가 만들어집니다.array— 위value옵션에서 설명한 값들의 배열입니다. 배열의 모든 원소가 집계되어 상태가 만들어집니다.
value 및 array 모드에서 포맷은 해당 컬럼을 값 타입의 컬럼처럼 읽습니다. 즉, AggregateFunction(f, T)는 T로, AggregateFunction(f, T1, T2)는 Tuple(T1, T2)로, array 모드에서는 그 타입의 Array로 읽습니다. 값은 해당 포맷이 그 타입에 대해 사용하는 표현 방식으로 기록됩니다. 텍스트 형식에서는 숫자나 문자열, JSON 포맷에서는 JSON 배열, RowBinary나 Native에서는 해당 타입의 이진 인코딩, Parquet에서는 해당 타입의 컬럼과 같은 식입니다. 이는 모든 입력 형식에 적용되며, Array, Tuple, Map 안에 중첩된 AggregateFunction에도 적용됩니다.
예시
다음과 같은 구조의 테이블이 있다고 가정합니다:
aggregate_function_input_format = 'value'일 때:
aggregate_function_input_format = 'array'로 설정한 경우:
value 및 array 포맷은 삽입 시 값을 생성하고 집계해야 하므로 기본 state 포맷보다 느립니다.
aggregate_functions_null_for_empty
쿼리의 모든 집계 함수에 -OrNull 접미사를 추가하도록 재작성하는 기능을 활성화하거나 비활성화합니다. SQL 표준 호환성을 위해 이 설정을 활성화하세요. 이 기능은 일관된 결과를 얻기 위해 쿼리 재작성(count_distinct_implementation 설정과 유사함) 방식으로 구현되며, 특히 분산 쿼리에서 유용합니다. 가능한 값:- 0 — 비활성화됨.
- 1 — 활성화됨.
aggregate_functions_null_for_empty = 0으로 설정하면 다음과 같은 결과가 나옵니다:
aggregate_functions_null_for_empty = 1로 설정하면 결과는 다음과 같습니다: