250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- tensorflow text
- integrated gradient
- grad-cam
- youtube data
- airflow subdag
- 공분산
- chatGPT
- hadoop
- requests
- Airflow
- XAI
- Retry
- BigQuery
- session 유지
- GenericGBQException
- UDF
- 유튜브 API
- TensorFlow
- GCP
- correlation
- flask
- spark udf
- 상관관계
- login crawling
- API
- Counterfactual Explanations
- API Gateway
- gather_nd
- subdag
- top_k
Archives
- Today
- Total
데이터과학 삼학년
[Impala] with 문(clause) 결과셋을 임의 저장하지 않음 본문
반응형
WITH 문
-복잡한 쿼리를 sub-쿼리의 형태로 구조화하고 재사용하기에 용이한 구문
- with 문을 쓸 때 쿼리의 결과르 temp라는 임시 테이블에 쌓아놓기 때문에 재사용성이 있음 (RDMS, HIVE)
WITH
temp_a AS (
SELECT *
FROM dataset.tableA
),
temp_b AS (
SELECT *
FROM dataset.tableB
)
SELECT *
FROM temp_b LEFT JOIN temp_a USING(id)
- 너무 많은 서브쿼리 구성은 temp 테이블(with 전용) 의 메모리 over할 수 있기 때문에 지양해야함
- 이를 보완하기 위해 Crate temp Table을 사용함
CREATE TEMPORARY TABLE tmp2 AS SELECT c2, c3, c4 FROM mytable;
[예외 케이스]
impala 에서는 WITH 구문 테이블을 쿼리의 결과셋을 임시 테이블에 저장하지 않아 재사용성 없음
- WITH 문의 결과셋 테이블을 하위 쿼리에서 재참조하게 되면 동일한 쿼리를 수행시키는 구조
- 따라서 별도의 테이블을 임의로 생성하여 작업할 필요가 있음
- 아래와 같은 쿼리가 있을 때 tableA는 두번 조회되는 구조로 동작함
WITH
temp_a AS (
SELECT *
FROM dataset.tableA
),
temp_b AS (
SELECT *
FROM dataset.tableB
),
temp_c AS (
SELECT *
FROM temp_a
WHERE condition > 0
)
SELECT *
FROM temp_c
LEFT JOIN temp_b USING(id)
LEFT JOIN temp_a USING(id)
728x90
반응형
LIST
'Data Visualization & DataBase' 카테고리의 다른 글
[DE] 데이터 파티셔닝 & 샤딩 (0) | 2023.08.07 |
---|---|
ODS(Operational Data Store), 팩트 테이블, 디멘션 테이블 (0) | 2023.05.29 |
[DB] overwrite VS upsert (0) | 2022.12.06 |
[DB] JOIN condition에 OR 포함? (0) | 2022.11.26 |
Fact Table / Dimension Table (0) | 2022.10.23 |
Comments