Monday

Impala Union 사용 본문

빅데이터/Impala

Impala Union 사용

뉴비2 2021. 3. 21. 23:32

1) Default UNION

SELECT * FROM table1 UNION SELECT * FROM table2; 

= SELECT * FROM table1 UNION DISTINCT SELECT * FROM table2  

 

Impala 에서 UNION = UNION DISTINCT 입니다.

 

2) Impala UNION 사용 조건

또한, Impala 에서 Union 사용 시 table1의 컬럼이름과, table2의 컬럼이름이 같아야 합니다.

ex) SELECT zip_plus_4 AS zipcode FROM california_emp UNION DISTINCT SELECT CAST(zip AS STRING) AS zipcode FROM california_offices;

 

3) Union 사용 시 유의사항

1. Limit 사용 시 마지막 테이블에만 적용됨.

ex) califonia_offices 테이블에 65개, oregon offices 테이블에 5개의 zip이 존재할 때 다음과 같은 결과는 67이 나옵니다.

SELECT zip FROM california_offices

UNION ALL

SELECT zip FROM oregon_offices

LIMIT 2;

 

2. ORDER BY 적용 시 순서 보장 안됨.

ex ) califonia_offices 테이블에 zipcode 범위가 1000~2000, oregon offices 테이블에 zipcode 범위가 3000~4000

SELECT zip FROM california_offices

UNION ALL

SELECT zip FROM oregon_offices

ORDER BY country DESC;

ORDER BY가 마지막 oregon_offices 테이블에만 적용, 뿐만 아니라 UNION은 순서 유지를 보장해주지 않습니다. 따라서 맨 위에 어떤 Row가 올 지 장담 할 수 없습니다.)

 

Comments