[英]Drop partitions in Hive with different date format in the same partition column
我在字符串數據類型的分區列中有兩種類型的值:
yyyyMMdd
yyyy-MM-dd
例如,有分區列值20200301
、 2020-03-05
、 2020-05-07
、 20200701
等。
我需要使用 DDL 語句刪除小於20200501
的分區
alter table tblnm drop partition(partcol < 20200501);
當我使用yyyy-MM-dd
格式刪除分區時,只會2020-03-05
分區。 但是,當我使用yyyyMMdd
格式刪除分區時,將刪除20200301
以及所有包含連字符 ( -
) 的分區。
如何通過忽略連字符或忽略包含連字符的數據來比較值? 如有必要,我可以在 alter table 查詢中替換連字符。
所有帶連字符的分區都被刪除的原因是java中的字符串比較:每個2020-XX-XX
字符串小於每個2020XXXX
字符串。
要將分區限制為沒有連字符的分區,您應該以yyyy0101
格式向 DDL添加下限:
alter table tblnm drop partition(partcol < 20200501, partcol >= 20200101);
請注意,前幾年的分區不會被刪除,但您可以自由運行類似
alter table tblnm drop partition(partcol <= 20191231, partcol >= 20190101);
只要你需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.