메인 콘텐츠로 건너뛰기

설명

SimpleAggregateFunction 데이터 타입은 집계 함수의 중간 상태를 저장하지만, AggregateFunction 타입처럼 전체 상태를 저장하지는 않습니다. 이 최적화는 다음 속성을 만족하는 함수에 적용할 수 있습니다:
행 집합 S1 UNION ALL S2에 함수 f를 적용한 결과는 행 집합의 각 파트에 f를 개별적으로 적용한 뒤, 그 결과에 다시 f를 적용해 얻을 수 있습니다: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).
이 속성은 부분 집계 결과만으로도 결합된 결과를 계산하는 데 충분하다는 것을 보장하므로, 추가 데이터를 저장하거나 처리할 필요가 없습니다. 예를 들어 min 또는 max 함수는 중간 단계의 결과만으로 최종 결과를 추가 단계 없이 계산할 수 있지만, avg 함수는 합계와 개수를 함께 추적해야 합니다. 그런 다음 중간 상태를 결합하는 최종 Merge 단계에서 이 값을 나누어 평균을 계산합니다. 집계 함수 값은 일반적으로 함수 이름 뒤에 -SimpleState combinator를 붙여 집계 함수를 호출하면 생성됩니다.

구문

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)
매개변수
  • aggregate_function_name - 집계 함수 이름입니다.
  • 유형 - 집계 함수 인수의 타입입니다.

지원되는 함수

다음 집계 함수가 지원됩니다.
SimpleAggregateFunction(func, 유형)의 값은 모두 동일한 유형이므로, AggregateFunction 유형과는 달리 -Merge/-State 컴비네이터를 적용할 필요가 없습니다.SimpleAggregateFunction 유형은 동일한 집계 함수에서 AggregateFunction보다 더 나은 성능을 제공합니다.

예시

CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
마지막 수정일 2026년 6월 10일