2016-10-12 3 views
2

У меня есть таблица улья, где раздел существует в одном столбце даты, но столбец даты хранится как INT в формате YYYYMMDD. Таблица также может содержать данные для будущих разделов даты.динамически отбрасывает раздел из таблицы HIVE

Теперь, как часть процесса, я хочу сбросить разделы, которые вставляются в выходные дни (сидя на день обработки).

Так что я пытаюсь использовать ниже

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; как сделать описанное выше заявление.

ответ

0

Пожалуйста, установите его в режим нестрогого первого и и после этого выполнять динамически,

SET hive.exec.dynamic.partition=nonstrict 
Смежные вопросы