2016-08-13 3 views
1

하이브 스크립트에 데이터 매개 변수를 전달하고 있지만 작동하지 않습니다.하이브에서 데이터 인수가 예상대로 작동하지 않습니다.

SET yrmonth=concat(substr(to_date(${hiveconf:runningdate}),1,4),substr(to_date(${hiveconf:runningdate}),6,2)); 
SET fom=TRUNC(${hiveconf:runningdate},'MONTH'); 
SET lom=LAST_DAY(${hiveconf:runningdate}); 

USE cust_db; 

SELECT saleid,podid,pname 
    FROM product 
    WHERE productln_yrmo=${hiveconf:yrmonth}; 

는 --customer_createddt가 쿼리에서 날짜 열

hive -hiveconf runningdate='2016-05-18' -f cust.hql 
+0

에 오신 것을 환영합니다 (또한 더 선명도 테이블의 DDL을 게시하시기 바랍니다). 커뮤니티가 귀하를 도울 수 있으려면 먼저 정확한 이슈와 귀하가 그것에 관해 가지고있는 특정 질문을 지정해야합니다. – rvighne

+0

최대한 빨리 도와주세요. – Rock

답변

0

이다, 'customer_createddt은'당신이 사용했기 때문에 DATE 유형이 될 것으로 보인다

SELECT cid,cname,cloc 
    FROM customer 
    WHERE customer_createddt >='${hiveconf:fom}' 
    AND customer_createddt <='${hiveconf:lom}' 
    AND cloc = 'AUS'; 

INT 열을 --productln_yrmo입니다 '< ='및 '> ='연산자를 사용하여 'fom'과 'lom'사이의 값 범위를 가져옵니다. 나는 날짜 범위에 대한 사전 비교가 완벽하게 잘 동작한다고 생각합니다. 그러나 'customer_createddt'열에 파티션을 사용하여 테이블 DDL을 만들 때 확실하지 않습니다.
그래서 지금까지 시도 주조 문자열을 적어주세요 스택 오버플로

SELECT cid,cname,cloc 
    FROM customer 
    WHERE customer_createddt >=CAST(${hiveconf:fom} AS DATE) 
    AND customer_createddt <=CAST(${hiveconf:lom} AS DATE) 
    AND cloc = 'AUS'; 
+0

고마워요. 잘 작동합니다. – Rock

+0

great !!! - @ 록 – Aditya

관련 문제