aggregate 함수(Databricks SQL)

사용자 지정 집계를 사용하여 배열의 요소를 집계합니다.

구문

aggregate(expr, start, merge [, finish])

인수

  • expr: ARRAY 식입니다.
  • start: 모든 형식의 초기 값입니다.
  • merge: 현재 요소를 집계하는 데 사용되는 람다 함수입니다.
  • finish: 집계를 완료하는 데 사용되는 선택적 람다 함수입니다.

반환

결과 형식은 finish 람다 함수가 있는 경우 또는 start의 결과 형식과 일치합니다.

초기 상태와 배열의 모든 요소에 식을 적용하고 이를 단일 상태로 줄입니다. 최종 상태는 finish 함수를 적용하여 최종 결과로 변환됩니다.

merge 함수는 2개의 매개 변수를 사용합니다. 첫 번째는 누적기이고 두 번째는 집계할 요소입니다. 누적기 및 결과는 start 형식이어야 합니다. 선택적 finish 함수는 하나의 매개 변수를 사용하고 최종 결과를 반환합니다.

이 함수는 reduce 함수(Databricks SQL)의 동의어입니다.

예제

> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT aggregate(array(1, 2, 3, 4),
                   named_struct('sum', 0, 'cnt', 0),
                   (acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
                   acc -> acc.sum / acc.cnt) AS avg
 2.5