【发布时间】:2016-10-12 23:07:20
【问题描述】:
我有一个配置单元表,其中一个日期列上存在分区,但日期列以 YYYYMMDD 格式存储为 INT。该表还可以包含未来日期分区的数据。
现在,作为流程的一部分,我想删除正在使用的分区(在处理日)。
所以我尝试在下面使用
ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('${load_date}'),1) AS STRING),'-','') AS INT));
表示日期值
ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT));
但它失败了。
查询的输出是CAST(REGEXP_REPLACE(CAST(DATE_SUB(TO_DATE('2016-09-11'),1) AS STRING),'-','') AS INT) => 20160910
当我编写像ALTER TABLE TABLE1 DROP IF EXISTS PARTITION (TBL_DATE >= 20160910) 这样的放置分区时,它工作正常。
考虑到我的输入只是日期格式 YYYY-MM-DD,我已经删除了所有给定输入日期 -1 的分区;如何使上述语句起作用。
【问题讨论】:
标签: hive