#sql #variables #hive #hiveql #impala
#sql #переменные #улей #hiveql #impala
Вопрос:
Я пытаюсь понять небольшой фрагмент запроса, который должен быть адаптирован Impala.
Select
.
.
from ${ENV_PREFIX}private_datalap_storage_customer_v1 cus
lateral view explode(adresses) address as addr
where year = substr(${REF_DATE}, 1, 4)
and month = substr(${REF_DATE}, 5, 2)
Может кто-нибудь, пожалуйста, помочь понять, что происходит в from
and Where
?
Кроме того, я буду признателен, если кто-нибудь сможет объяснить, почему у меня возникает ошибка ниже при попытке выполнить запрос на Impala
Строка 35: 20 исключения ParseException не может распознать ввод рядом с ‘,’ «1» ‘,’ в спецификации функции
Ответ №1:
substr() получает строку, начальную позицию и длину в символах для извлечения из начальной позиции. substr('2021-02-20', 1, 4)
следует извлечь 2021
.
Скорее всего, переменная не разрешена, и вы получаете substr(, 1, 4)
вместо, например substr('2021-02-20', 1, 4)
.В Impala переменные представлены в этой форме ${var:var_name}
, проверьте, как вы их передаете и как они разрешаются с помощью select '${var:var_name}'
Также я не знаю, как вы передаете переменную в Hive, но строковый литерал должен быть заключен в кавычки, если сама переменная не содержит кавычек, это substr(${REF_DATE}, 1, 4)
разрешается как substr(2021-02-20, 1, 4)
, что неверно, поэтому дважды проверьте, нужно ли вам заключать ${REF_DATE}
в кавычки или она уже содержит кавычки.