Redshift는 Athena와는 달리, 비정형 데이터 구조(주로 Json과 같은 key-value 구조)를 저장할 수 있도록 하는 super type 컬럼을 제공하고 있다.
관련 내용 : https://docs.aws.amazon.com/redshift/latest/dg/r_SUPER_type.html
Athena의 경우에는 1개의 컬럼당 1개의 Value가 1:1로 지정되어 있기 때문에 select “컬럼명”을 통해서 간단히 리포팅을 하면 되지만 Redshift의 super type 컬럼의 경우 select “컬럼명”으로 쿼리를 하면 실행이 되지 않음에 주의
위처럼 key-value 기준으로 조회되는 컬럼에 대하여, 각 key를 새로운 컬럼으로 쿼리해내는 방법은 간단히 아래와 같다.
SELECT 컬럼명.key값 FROM table명 ...
예를 들어, 위 데이터를 기준으로 SELECT event.app_open_rate를 하면 테이블에 포함된 행의 개수만큼 app_open_rate 데이터가 추출될 것이다. (각 행마다 개별 key-value 쌍도 1개씩 들어가있기 때문에)
위 쿼리는 단순히 key-value를 짜여져있는 데이터를 어떻게 컬럼으로 추출하는 지에 대한 내용이고, 각 컬럼에 대한 전처리는 별도로 진행해주는 것이므로 cast 등의 형변환이나 sum, count 등의 aggregate 함수들에 대한 내용 숙지도 필요할 것으로 보인다.
각 컬럼마다 별칭을 지정했다면 Group By 절에 큰 따옴표(“ “)를 표시해주지 않으면 실행 오류가 나므로 유의