본문 바로가기

Coursera 강의 정리/Modern Big Data Analysis with SQL

S2 Analyzing Big Data with SQL - W6 Combining Data

Modern Big Data Analysis with SQL 특화 과정 중 두 번째 강의 Analyzing Big Data with SQL

여섯 번째 주차 Combining Data 내용 정리입니다.

 

UNION ALLUNION DISTINCTSELECT 결과를 수직으로 결합한다.

UNION
결합 시 ORDER BYLIMIT 연산에 주의하며, Sub Query로 관련 기능을 처리하는 것을 권장한다.

JOIN
으로 두 테이블을 특정 기준에 따라서 수평으로 결합한다.

JOIN
연산은 INNER JOIN, OUTER JOIN으로 구분한다.

UNION 결합

UNION은 두 개 이상의 SELECT 결과를 수직(vertically)으로 결합한다. 따라서 UNION으로 결합하기 위해서는 결합하는 SELECT 결과의 열이 데이터 타입과 이름이 동일해야 한다. UNION 결합은 중복 허용 여부에 따라서 UNION ALL과 UNION DISTINCT로 구분한다.

 

1)     UNION DISTICT: UNION만 사용할 경우 UNION DISTINCT를 실행한다. 중복을 허용하지 않는다.

2)     UNION ALL: 중복을 허용한다.

 

UNION의 결과로 나온 행의 순서는 사실상 임의적이다. 두 테이블을 UNION 한 결과에 대해서 순서를 부여하고 싶을 경우 ORDER BY를 사용할 수 있다. 하지만, 이러한 연산은 일부 SQL 엔진(MySQL, PostgreSQL)에서만 지원한다. 또한 LIMIT을 통해 최종 출력 결과를 제어할 수는 있지만, 마찬가지로 일부 SQL 엔진(MySQL, PostgreSQL)에서만 지원한다. 따라서 UNION 결과 전체에 대한 ORDER BY, LIMIT 연산을 수행하기 위해서는 SQL Sub Query를 사용하는 것이 일반적이다.

JOIN 결합

JOIN은 테이블을 특정 기준에 따라서 결합한다. JOIN은 INNER JOIN, OUTER JOIN으로 구분하며, OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, JULL OUTER JOIN으로 구분한다.

 

1)     INNER JOIN: 두 테이블에 JOIN 기준이 되는 값이 모두 있는 레코드만 출력한다.

2)     LEFT OUTER JOIN: 기준에 따라 결합하는 두 테이블 중 왼쪽에 있는 레코드는 모두 출력한다.

3)     RIGHT OUTER JOIN: 기준에 따라 결합하는 두 테이블 중 오른쪽에 있는 레코드는 모두 출력한다.

4)     FULL OUTER JOIN: 기준에 따라 결합하는 두 테이블에 있는 모든 레코드를 출력한다.

 

JOIN의 기준은 반드시 Equality가 아니어도 된다. 이러한 JOIN을 Non-Equi JOIN이라고 한다. 하지만 Hive에서는 JOIN의 기준은 반드시 Equality 연산을 만족해야 한다.

 

INNER JOIN은 Cartesian JOIN과 필터링의 결합이다. Cartesian JOIN은 두 테이블의 가능한 모든 조합을 의미하며 CROSS JOIN 키워드로 사용한다. INNER JOIN이 목적이라면 CROSS JOIN + Filtering 보다 INNER JOIN을 사용하는 것이 성능면에서 효율적이다.