簡體   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