2017-11-06 8 views
6

여러 CTE가 포함 된 매우 길고 복잡한 임팔라 쿼리를 최적화하려고합니다. 각 CTE는 여러 번 사용됩니다. CTE를 작성한 후에는 CTE와 관련된 테이블에서 SCAN HDFS 조작 대신 기본 조회에서이 CTE의 결과를 그대로 다시 사용해야한다는 임 팔라를 지시 할 수 있어야합니다. 이것이 가능한가? 그렇다면 어떻게?CTE의 즉각적인 평가

내가 impalad 버전을 나는 그렇게 생각하지 않아요 2.1.1-cdh5 RELEASE (7901877736e29716147c4804b0841afc4ebc9037를 구축) 버전

+0

바보 같은 질문이 될 수있는 공식 문서와 같이 profile를 사용하지만 내가 CTE의 주요 목적은 임팔라 공통 테이블 식 – shainnif

+0

것입니다 상기 질의를 실행함으로써 수집 된 특정 결과 세트를 포착하지 않고, 질의를 재사용하는 것. –

답변

2

을 사용하고 있습니다. 나는 WITH 절이 영구 객체를 생성하지 않는다고 믿습니다. 새로운 테이블이나 뷰를 사용하여 네임 스페이스가 어수선하게 흩어지는 것을 피하고, 개별적인 부분을 dering하고 교체함으로써 크고 복잡한 쿼리를 쉽게 리팩터링 할 수있게 해줍니다. WITH 절에 사용 된 u 리는 언젠가 뷰가되거나 ETL 프로세스 중 요약 테이블로 구체화 될 수있는 좋은 후보입니다.

2

가능합니까?

열팽창 계수의 바로 목적은 후속 쿼리 가령 SELECT 의해 선행 쿼리로부터 획득 된 결과를 재사용 (즉 with 절을 사용). 그래서 나는 그것이 불가능한 이유를 보지 못합니다.

검색어에 Explain을 사용하면 실제 SCAN HDFS 세부 정보를 확인할 수 있습니다.

더 I에 대한

/O 관련 통찰력 https://www.cloudera.com/documentation/enterprise/5-7-x/topics/impala_explain_plan.html#perf_profile

+1

입니다 가정입니다 @shainnif CTE –