[英]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.