[英]drop partition dynamically from HIVE table
我有一個hive表,其中一個日期列存在分區,但日期列以YYYYMMDD格式存儲為INT。 該表還可以包含未來日期分區的數據。
現在作為整個過程的一部分,我想刪除那些令人興奮的分區(坐在處理日)。
所以我想在下面使用
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));
但它失敗了。
查詢的輸出是CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT) => 20160910
當我編寫我的drop分區時,如ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= 20160910)
,那么它工作正常。
考慮到我的輸入將只是日期格式YYYY-MM-DD並且我已經刪除所有給定輸入日期為-1的分區; 如何使上述聲明有效。
請先將其設置為非嚴格模式,然后動態執行,
SET hive.exec.dynamic.partition=nonstrict
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.