2016-10-12 8 views
2

日付カラムの1つにパーティションが存在するハイブテーブルがありますが、日付カラムはYYYYMMDDの形式でINTとして保存されます。この表には、将来の日付パーティション用のデータも含まれます。HIVEテーブルから動的にパーティションを削除

ここで、私はusture days(処理日に座っている)にfuingしているパーティションを削除したいと考えています。

だから私は

ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('${load_date}'),1) AS STRING),'-','') AS INT)); 

の下に使用しようとしていますが、日付値と

ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT)); 

を意味しかし、それは失敗しています。私はそれが正常に動作している、ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= 20160910)ように私のドロップパーティションを書いていたとき

クエリの出力はCAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT) => 20160910

です。

私の入力は日付形式YYYY-MM-DDのみであり、入力日付-1を与えたすべてのパーティションを削除したとします。上記の声明を働かせる方法。

答えて

0

第一及び厳密でモードに設定し、その後、動的に実行してください

SET hive.exec.dynamic.partition=nonstrict 
関連する問題