AWS Athena - Как параметризовать SQL-запрос

Я хочу предоставить значения времени выполнения для запроса в операторах Select & Create table. Каковы способы параметризации запросов Athena SQL? Я пробовал использовать выражения PREPARE и EXECUTE из Presto, но он не работает в консоли Athena. Нужны ли нам какие-либо внешние скрипты, такие как Python, для его вызова?

PREPARE my_select1
FROM SELECT * from NATION;

EXECUTE my_select1 USING 1;

person Rajeev    schedule 13.04.2017    source источник


Ответы (3)


В документации Справочника по SQL и HiveQL не перечислены PREPARE и EXECUTE как доступные команды.

Перед отправкой в ​​Amazon Athena вам нужно будет полностью построить свой SELECT оператор.

person John Rotenstein    schedule 14.04.2017
comment
Спасибо. Что означает, что в настоящее время нет возможности параметризовать SQL-запросы (DDL, операторы выбора) в AWS Athena? - person Rajeev; 14.04.2017
comment
Верный. PreparedStatement еще не доступен в драйвере Athena JDBC. Многие просили об этом, и их отслеживают здесь: github.com/prestodb/presto/issues/1195 < / а> - person Tom Harrison; 07.12.2017

Athena не поддерживает параметризованные запросы. Как бы то ни было, вы можете создавать определяемые пользователем функции, которые можно вызывать в теле запроса. Обратитесь к этому, чтобы узнать больше о UDF.

person Prabhakar Reddy    schedule 17.07.2020
comment
этот ответ вселил мои надежды, но нет, Athena не поддерживает UDF с табличным значением (которые вы можете использовать для параметризации запроса) - связанная документация здесь о скалярных udf - person gordy; 05.03.2021

Вам нужно перейти на движок Athena версии 2, и теперь, похоже, он поддерживается с 2021-03-12, но я не могу найти официального отчета:

https://docs.aws.amazon.com/athena/latest/ug/querying-with-prepared-statements.html

person gordy    schedule 19.03.2021
comment
Только что было объявлено aws.amazon.com/about-aws/whats-new/2021/07/ - person Ondrej; 08.07.2021