본문으로 바로가기
본문으로 바로가기

SimpleAggregateFunction 데이터 타입

Description

SimpleAggregateFunction 데이터 타입은 AggregateFunction 타입처럼 집계 함수의 전체 상태가 아니라, 집계 함수의 중간 상태만을 저장합니다.

이 최적화는 다음과 같은 성질을 만족하는 함수에 적용할 수 있습니다:

함수 f를 행 집합 S1 UNION ALL S2에 적용한 결과는,
행 집합의 각 부분에 개별적으로 f를 적용한 뒤, 그 결과에 다시
f를 적용함으로써 얻을 수 있습니다: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).

이 성질은 결합된 결과를 계산하는 데 부분 집계 결과만으로도 충분함을 보장하므로, 추가 데이터를 저장하거나 처리할 필요가 없습니다. 예를 들어 min 또는 max 함수의 결과는 중간 단계에서 최종 결과를 계산하기 위해 별도의 추가 단계가 필요하지 않지만, avg 함수는 최종적으로 중간 상태를 결합하는 Merge 단계에서 평균을 계산하기 위해 합계와 개수를 함께 유지해야 하며, 이 두 값을 나누어 평균을 구합니다.

집계 함수 값은 일반적으로 함수 이름에 -SimpleState 콤비네이터를 붙여 집계 함수를 호출하여 생성합니다.

구문

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)

매개변수

  • aggregate_function_name - 집계 함수의 이름입니다.
  • Type - 집계 함수 인수의 유형입니다.

지원되는 함수

다음 집계 함수를 지원합니다:

참고

SimpleAggregateFunction(func, Type)의 값은 동일한 Type을 가지므로 AggregateFunction 타입과 달리 -Merge/-State 조합자를 적용할 필요가 없습니다.

동일한 집계 함수에 대해서는 SimpleAggregateFunction 타입이 AggregateFunction보다 성능이 더 좋습니다.

예제

CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;