2017-01-11 1 views
0

하이브 SELECT 쿼리에서 테이블 이름을 어떻게 처리합니까?사례 - 하이브의 테이블 이름

나는의 효과에 뭔가를하고 싶어 -

SELECT col1, col2 
FROM 
    CASE ${PARAM} 
    WHEN 'val1' THEN table1 
    WHEN 'val2' THEN table2 
+2

SQL의 모든 구문에 유효한 구문이 아닌 것 같습니다. – gobrewers14

+0

이 접근법이 구문 적으로 잘못 되었기 때문에 사례를 자세하게 설명 할 수 있습니까? Case When Then Select 절에서만 사용할 수 있습니다. –

+0

@RajatMishra 하이브 스크립트의 입력 매개 변수를 기반으로 다른 원본 테이블의 출력을 생성하려고합니다. 나는 완전히 유효하지 않은 문법을 이해하지만 내 질문은 유효한 하이브 구문이 목적을 달성하는 데 사용될 수 있습니다. – KMeansK

답변

1

이 가능하다. 다음과 같이 쿼리를 다시 작성하십시오.

SELECT col1, col2 FROM table1 WHERE '${PARAM}' = 'val1' --only one subquery will be executed 
union all 
SELECT col1, col2 FROM table2 WHERE '${PARAM}' = 'val2' 
+0

응답 해 주셔서 대단히 감사드립니다. 나는이 접근법으로 갈 것이다. – KMeansK