320x100
320x100
AWS Athena 에서
아래와 같이 콤마(Comma)로 구분되어 한 행에 3개의 데이터가 나열되어 있다고 가정하자.
fruit |
사과, 수박, 참외 |
한 행에 있는 데이터를 아래와 같이 3개의 행으로 나타내고 싶은 경우 어떻게 하면 될까?
fruit |
사과 |
수박 |
참외 |
Cross JOIN : 카티션 곱(CARTESIAN PRODUCT)
한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능입니다.
상호 조인 결과의 전체 행 개수는 두 테이블의 각 행 의 개수를 곱한 수만큼 됩니다.
우선 아래와 같이 split 함수를 쓰게 되면
WITH t AS (
SELECT '사과,수박,참외' AS fruit
)
SELECT split(t.fruit, ',')
Array 형식으로 결과값이 나온다.
[사과, 수박, 참외]
|
끝으로 cross Join unnest 를 사용하게 되어 아래와 같은 최종 코드로 마무리 한다.
WITH t AS (
SELECT '사과,수박,참외' AS fruit
)
SELECT value
FROM t
CROSS JOIN UNNEST(split(t.fruit, ',')) as x(value)
결과값
320x100
320x100
'빅데이터 관련 자료 > [SQL] Basic' 카테고리의 다른 글
PostgreSQL 과 MySQL 큰 차이 (0) | 2024.02.29 |
---|---|
generate_series 함수 (0) | 2024.02.21 |
5장 - KSQL과 다른 스트리밍 플랫폼 비교 (0) | 2024.01.13 |
4장 - KSQL 고급 기능과 최적화 (0) | 2024.01.11 |
3장 - KSQL을 활용한 실전 튜토리얼: 스트리밍 데이터 처리 (0) | 2024.01.10 |