java.lang.RuntimeException:org.apache.hadoop.hive.ql.parse.ParseException:行无法识别'date_format''('''DATE_SUB'常量附近的输入

问题描述 投票:0回答:1

我的配置单元查询如下。

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 partitioning
1个回答
0
投票

根据Hive Language ManualALTER 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}');
© www.soinside.com 2019 - 2024. All rights reserved.