본문 바로가기

Wiki/SQL

Spark SQL에서 배열을 풀고 요소의 인덱스 구하기

  • Spark SQL에서 배열을 풀고 요소의 인덱스를 구하는 방법에 관한 글입니다.
  • EXPLODE, POSEXPLODE 함수를 활용합니다.

문제

  • 필요에 따라 테이블에 데이터를 배열 형태로 저장할 때가 있습니다.
  • 하지만, 배열로 된 데이터를 바로 분석에 활용하는 것은 어려움이 많습니다.
  • 분석을 쉽게 하기 위해 배열을 푸는 방법을 알고 활용하는 것이 중요합니다.

해결 방법

1. EXPLODE

  • 배열의 요소를 풀어서 Long Data로 만들어주는 함수입니다.
  • 단, 하나의 서브쿼리 안에서 EXPLODE 함수는 한번만 사용 가능합니다.
  • 아래 예제와 같이 skill 컬럼을 EXPLODE 함수로 풀어주면, 요소의 개수만큼 행이 생기게 됩니다.

2. POSEXPLODE

  • EXPLODE와 동작하는 방식은 동일합니다.
  • 하지만, 앞에 접두어 POS가 붙었다는 점에서 알 수 있듯이, 배열의 각 요소의 인덱스까지 함께 반환합니다. 파이썬의 enumerate와 동작 방식이 비슷합니다.
  • 참고로 인덱스는 0부터 시작합니다.