https://spark.apache.org/docs/latest/api/sql/#aggregate
Spark SQL의 AGGREGATE 펑션을 사용하면 Array 내의 값들을 집계할 때 유용하게 사용할 수 있습니다.
# 공식페이지 설명
aggregate(expr, start, merge, finish) - Applies a binary operator to an initial state and all elements in the array, and reduces this to a single state. The final state is converted into the final result by applying a finish function.
# 펑션 사용 방법
AGGREGATE({array 컬럼명}, {array의 몇 번째 값부터 적용할 것인지}, {집계 함수}, {집계가 끝난 뒤 적용할 함수})
# 집계함수 사용 예시
# 각 Array의 item.price 값을 sum
(accumulator, item) -> accumulator + item.price
[실제 사용 예시]
# Array의 price 값을 모두 int로 변환한 뒤에 sum
select contents, AGGREGATE(contents, 0, (accumulator, item) -> accumulator + cast(item.price_amt as int)) AS totalPrice
from contents_table
# 결과 값에 10을 곱하여 반환
select contents, AGGREGATE(contents, 0, (accumulator, item) -> accumulator + cast(item.price_amt as int), accumulator -> accumulator * 10) AS totalPrice
from contents_table