Redshift는 AWS의 MPP(Massive Parallel Processing) Database이다. PostgreSQL을 기반으로 한다. 클라우드에서 완벽하게 관리되는 데이터 웨어하우스 서비스이며 작게는 수백 기가바이트부터 페타바이트 이상까지 데이터를 확장할 수 있다.
현재 MySQL 을 사용중이고 대용량의 데이터를 가져와야 하는 상황이었는데 아키텍처팀 팀장님께서 Redshift 를 생성해주셔서 처음 사용해 보게 되었다. 쿼리가 조금 달라서 다시 수정을 하였고 내가 경험한 것들만 일단 적어본다.
if(PH.KIND_CD in ('refund', 'refund_part'), PH.TOTAL_PRICE * -1, PH.TOTAL_PRICE) as total_price
redshift 에서는 IF문이 실행되지 않는다. 대신 CASE WHEN 구문을 사용하면 된다.
CASE WHEN (PH.KIND_CD in ('refund', 'refund_part')) THEN PH.TOTAL_PRICE * -1 ELSE PH.TOTAL_PRICE END as total_price
ifnull(PH.DIVIDE_YN, 'N') as divide_yn
ifnull 역시 실행되지 않고 대신에 coalesce를 사용한다.
coalesce(PH.DIVIDE_YN, 'N') as divide_yn
외부 조인에서 on 절의 하위쿼리는 지원하지 않는다.
left outer join PAYMENT_HISTORY PH2 on PH2.PAY_HIST_NO = (select max(PAY_HIST_NO) from PAYMENT_HISTORY