Параметризованный SQL в Presto на Presto CLI

Есть ли возможность предоставить параметры в Presto CLI.

Я пытаюсь изменить свою команду impala-shell на Presto, где мой файл HQL получает параметр из командной строки impala, как показано ниже.

impala-shell -f ot_full.hql --var=date_next=${date_next_para} --var=yrmth=${yrmth_para} --var=yrmth_L12=${yrmth_L12_para} --var=pyrmth=${pyrmth_para}

Предложение WITH в presto не так уж и полезно.

Как мы можем преобразовать его в командную строку Presto.

Я не нашел документации / примеров по этому поводу в https://prestodb.io/docs/current/


person Shawn    schedule 07.09.2017    source источник
comment
Возможно, не так уж и полезно, но какие параметры инъекции с sed: about cat ot_full.hql | sed -e "s/date_next/${date_next_para}/" .. | presto-cli?   -  person Piotr Findeisen    schedule 07.09.2017


Ответы (1)


Presto .CLI не поддерживает это, поэтому вам нужно будет заменить переменные в запросе SQL, прежде чем передавать его в CLI. Один из способов - сделать это прямо в оболочке:

presto --execute "SELECT * FROM table WHERE ds >= '${date_next_para}'"

Для более длинных запросов хорошим вариантом будет использование здесь документа.

person David Phillips    schedule 07.09.2017
comment
Конечно, данный обходной путь будет работать, но есть ли у нас какие-либо планы по обеспечению такой функциональности в будущей разработке? - person Shawn; 08.09.2017
comment
@Shawn выглядит как популярный запрос функции, но не реализован github.com/prestodb/presto/issues/5918 - person Davos; 04.07.2018