2013-05-17 3 views
0

하이브를 사용하여 CASE WHEN THEN 문에서 비교를 수행 할 때. u 구문이 올바른지 확인하십시오. 나는 코드의 당신의 조각을 추측하고있어하이브 구문 - 사례의 비교


${hiveconf:Test Metric} METRIC_ID,    
    CASE 
     WHEN ((A.X,A.Y,A.Z)IN (SELECT X,Y,Z FROM HIVE_TPCE_TEMP.TESTTABLE)) 
     THEN CASE 
       WHEN MODE IN ('A','N') 
       THEN ${ 
         hiveconf:SOME_CONSTANT ELSE ${hiveconf: SOME_CONSTANT 
         } 
        END 

+0

시도 할 때 어떤 일이 발생 했습니까? –

+0

FAILED : ParseException 라인 16:47이 'SELECT' 'X' 'FROM'식 입력 사양 근처의 입력을 인식하지 못합니다. 이것은 오류 서명입니다. –

답변

0

는 쿼리의 SELECT 절에서 무엇입니까? Hive Language Manual에 따르면 "Hive는 FROM 절에서만 하위 쿼리를 지원합니다".

CASE WHEN 문에 하위 쿼리가 있습니다. 지원되지 않는 것 같아서 구문이 올바르지 않습니다 (하이브에서).

+0

같은 논리를 다른 방법이나 문으로 하이브에 구현할 수 있습니까? –

+0

'IN' 절을 사용하여 찾고자하는 항목을 찾는 대신 전체 쿼리 없이는 말할 수 없지만 쿼리의 나머지 부분에'테스트하기 '를'LEFT JOIN'하십시오. 하위 쿼리를 사용하지 않고 조인 된 열에'CASE WHEN' 문을 적용 할 수 있습니다. –

+0

너무 솔직하게 말해서 이것은 하나의 짐승처럼 보입니다. SQL (및 특히 HQL)은 이러한 재귀 조회를 위해 실제로 구축되지 않았습니다. 아마도 순수한 MapReduce가 요구 사항에 더 잘 맞을 것입니까? –