- Spark SQL에서 배열을 풀고 요소의 인덱스를 구하는 방법에 관한 글입니다.
- EXPLODE, POSEXPLODE 함수를 활용합니다.
문제
- 필요에 따라 테이블에 데이터를 배열 형태로 저장할 때가 있습니다.
- 하지만, 배열로 된 데이터를 바로 분석에 활용하는 것은 어려움이 많습니다.
- 분석을 쉽게 하기 위해 배열을 푸는 방법을 알고 활용하는 것이 중요합니다.
해결 방법
1. EXPLODE
- 배열의 요소를 풀어서 Long Data로 만들어주는 함수입니다.
- 단, 하나의 서브쿼리 안에서 EXPLODE 함수는 한번만 사용 가능합니다.
- 아래 예제와 같이 skill 컬럼을 EXPLODE 함수로 풀어주면, 요소의 개수만큼 행이 생기게 됩니다.
2. POSEXPLODE
- EXPLODE와 동작하는 방식은 동일합니다.
- 하지만, 앞에 접두어 POS가 붙었다는 점에서 알 수 있듯이, 배열의 각 요소의 인덱스까지 함께 반환합니다. 파이썬의 enumerate와 동작 방식이 비슷합니다.
- 참고로 인덱스는 0부터 시작합니다.