reduce 함수

적용 대상:check marked yes Databricks SQL check marked yes Databricks 런타임

사용자 지정 집계기를 사용하여 배열의 요소를 집계합니다. 이 함수는 집계 함수와 동의어입니다.

구문

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

인수

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

반환

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

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

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

예제

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

> SELECT reduce(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