我正在使用hive,我正在尝试在一个滚动周期(过去60天)内创建一个表,但是在删除/删除过时的行/分区时遇到了一个问题。我的表有一个双分区事件\u date(string)和brand(string)。
我第一次试过
alter table northamerica_websites_last60 drop IF EXISTS partition (event_date < date_sub(current_date,61), brand="MLN");
但我收到错误消息:无法识别“date\u sub”附近的输入(常量中的“current\u date”)
然后尝试hive.exec.dynamic.partition.mode=nonstrict;
SET hive.exec.dynamic.partition.mode=nonstrict;
alter table northamerica_websites_last60 drop IF EXISTS partition (event_date < date_sub(current_date,61), brand="MLN");
我仍然收到错误消息:无法识别“date\u sub”附近的输入(常量中的“current\u date”)
然后我尝试了一个变量
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hivevar:DATE_VAR= date_sub(current_date,61);
alter table northamerica_websites_last60 drop IF EXISTS partition (event_date < ${DATE_VAR}, brand="MLN");
我仍然收到错误消息:无法识别“date\u sub”附近的输入(常量中的“current\u date”)
最后我试过了
SET hive.exec.dynamic.partition.mode=nonstrict;
SET runmdt = date_sub(current_date,91);
alter table northamerica_media_last90 drop IF EXISTS partition (event_date < ${hiveconf:runmdt} , brand="MLN");
但仍有错误消息:无法识别“date\u sub”附近的输入(常量中的“current\u date”)
但是,当我尝试使用字符串时,它是有效的。例如
alter table northamerica_websites_last60 drop IF EXISTS partition (event_date < '2020-07-25', brand="MLN");
如何在alter table drop partition查询中使用date\u sub(current\u date,91)?
暂无答案!
目前还没有任何答案,快来回答吧!