2016-08-13 8 views
1

データパラメータをハイブスクリプトに渡していますが、動作していません。データ引数がHiveで期待通りに機能しない

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}; 

int型の列

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

--customer_createddtがあなたのクエリから日付カラム

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

スタックオーバーフローへようこそ。コミュニティがあなたを助けることができるようにするには、最初にあなたの正確な問題とそれに関する特定の質問を指定する必要があります。 – rvighne

+0

できるだけ早く手伝ってください。 – Rock

答えて

0

です--productln_yrmoあなたが使用しているため、 'customer_createddtは' DATEタイプのようです'< ='と '> ='演算子は、 'fom'と 'lom'の間の値の範囲を取得します。私は日付範囲のための辞書編集の比較は完全にうまく動作すると思います。しかし、 'customer_createddt'カラムのパーティションでテーブルDDLが作成されたかどうかはわかりません。
ので(また、より明確にするため、あなたのテーブルの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

素晴らしい! - @岩 – Aditya

関連する問題