我的配置单元查询如下。
ALTER TABLE staging_customer360.buswspr_dly_rate_plan_chng_orc DROP PARTITION (part_load_month_year >= date_format(DATE_SUB('2020-05-01',760),'yyyy-MM'));
这给我下面的错误
java.lang.RuntimeException: org.apache.hadoop.hive.ql.parse.ParseException:line cannot recognize input near 'date_format' '(' 'DATE_SUB' in constant
我跑步时
select date_format(DATE_SUB('2020-05-01',760),'yyyy-MM');
它没有显示任何问题。
根据Hive Language Manual,ALTER TABLE
中的分区应通过值标识,即partition_spec不能为表达式:
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
partition_spec:
: (partition_column = partition_col_value, partition_column = partition_col_value, ...)
作为一种解决方法,您可以在其他地方进行计算,然后使用hivevar
执行SQL:
ALTER TABLE staging_customer360.buswspr_dly_rate_plan_chng_orc DROP PARTITION (part_load_month_year >= '${hivevar:calculated_value}');