#mysql #hive #hiveql
#mysql #улей #hiveql
Вопрос:
Я пытаюсь преобразовать запрос, написанный на MySQL, в HiveQL. Часть запроса, выдающая мне ошибку, является :
WHERE 1 = 1
AND table1.incoming_date >= DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) - 1 DAY),INTERVAL 3 MONTH)
Скорее всего, это потому, что INTERVAL не поддерживается в Hive с DATE_SUB().
Итак, может ли кто-нибудь преобразовать эту часть для меня.
Ошибка:
ParseException:
extraneous input 'DAY' expecting {')', ','}(line 179, pos 60)
Комментарии:
1. Пожалуйста, всегда показывайте нам ошибки
2. Включена ошибка
3. пожалуйста, версию hive?
4. PySpark 3.0.0 использует его внутри spark.sql
Ответ №1:
Возможно, вы можете сделать это, используя комбинацию функций даты Hive date_sub
и add_months
.
beeline> select current_date today, add_months(date_sub(current_date,1),-3) past_date;
INFO : OK
------------ -----------
| today | past_date |
------------ -----------|
| 2020-08-13 | 2020-5-12 |
------------ -----------|
1 row selected (0.101 seconds)