Skip to main content

설명

ClickHouse의 모든 집계 함수에는 직렬화하여 AggregateFunction 데이터 타입으로 저장하고 테이블에 보관할 수 있는 구현별 중간 상태가 있습니다. 이는 일반적으로 materialized view를 통해 수행됩니다. AggregateFunction 타입과 함께 일반적으로 사용되는 집계 함수 조합자는 두 가지입니다:
  • -State 집계 함수 조합자는 집계 함수 이름 뒤에 붙이면 AggregateFunction 중간 상태를 생성합니다.
  • -Merge 집계 함수 조합자는 중간 상태에서 집계의 최종 결과를 얻는 데 사용됩니다.

구문

매개변수
  • aggregate_function_name - 집계 함수의 이름입니다. 함수가 매개변수형인 경우 해당 매개변수도 함께 지정해야 합니다.
  • types_of_arguments - 집계 함수 인수의 타입입니다.
예시:

사용 방법

데이터 삽입

AggregateFunction 타입의 컬럼이 있는 테이블에 데이터를 삽입하려면, 집계 함수와 -State 집계 함수 조합자를 사용해 INSERT SELECT를 실행할 수 있습니다. 예를 들어, AggregateFunction(uniq, UInt64) 및 AggregateFunction(quantiles(0.5, 0.9), UInt64) 타입의 컬럼에 삽입하려면 다음과 같은 조합자가 적용된 집계 함수를 사용합니다.
함수 uniq 및 quantiles와 달리 uniqState와 quantilesState는 (-State 조합자가 추가된 형태) 최종 값이 아니라 상태를 반환합니다. 즉, AggregateFunction 타입의 값을 반환합니다. SELECT 쿼리 결과에서 AggregateFunction 타입의 값은 ClickHouse의 모든 출력 포맷에서 구현별 이진 표현을 가집니다. 입력 값으로부터 상태를 구성할 수 있도록 하는 특별한 세션 수준 설정 aggregate_function_input_format이 있습니다. 이 설정은 다음 포맷을 지원합니다:
  • state - 직렬화된 상태(기본값)입니다. 예를 들어 SELECT 쿼리로 데이터를 TabSeparated 포맷으로 덤프한 경우, 이 덤프는 INSERT 쿼리를 사용해 다시 로드할 수 있습니다.
  • value - 이 포맷은 집계 함수 인수의 단일 값 또는 인수가 여러 개인 경우 해당 값들의 튜플을 기대하며, 그 값을 집계해 상태를 구성합니다.
  • array - 이 포맷은 위의 value 옵션에 설명된 것처럼 값의 배열을 기대하며, 배열의 모든 원소를 집계해 상태를 구성합니다.
value 및 array 모드에서는 해당 컬럼이 값의 타입(T, Tuple(T1, T2), 또는 그것들의 Array)을 가진 것처럼, 입력 형식이 해당 타입에 대해 사용하는 표현으로 읽힙니다. 이는 CSV와 JSONEachRow부터 RowBinary와 Parquet까지 모든 입력 형식에서 동일하게 동작합니다.

데이터 선택

AggregatingMergeTree 테이블에서 데이터를 선택할 때는 GROUP BY 절과 데이터를 삽입할 때 사용한 것과 동일한 집계 함수를 사용하되, -Merge 조합자를 사용합니다. 집계 함수에 -Merge 조합자를 추가하면 상태 집합을 받아 이를 결합한 뒤 전체 데이터 집계 결과를 반환합니다. 예를 들어, 다음 두 쿼리는 동일한 결과를 반환합니다:

사용 예시

AggregatingMergeTree 엔진 설명을 참고하십시오.

관련 콘텐츠

마지막 수정일 2026년 9월 26일