繁体   English   中英

在同一分区列中删除具有不同日期格式的 Hive 中的分区

[英]Drop partitions in Hive with different date format in the same partition column

我在字符串数据类型的分区列中有两种类型的值:

  1. yyyyMMdd
  2. yyyy-MM-dd

例如,有分区列值202003012020-03-052020-05-0720200701等。

我需要使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM