AWS Athena - 如何参数化 SQL 查询
Posted
技术标签:
【中文标题】AWS Athena - 如何参数化 SQL 查询【英文标题】:AWS Athena - How to Parameterize the SQL query 【发布时间】:2017-09-10 03:52:52 【问题描述】:我想在 Select & Create table 语句中为查询提供运行时值。参数化 Athena SQL 查询的方法有哪些?
我尝试使用 Presto 的 PREPARE
和 EXECUTE
语句,但它在 Athena 控制台中不起作用。我们需要像 Python 这样的外部脚本来调用它吗?
PREPARE my_select1
FROM SELECT * from NATION;
EXECUTE my_select1 USING 1;
【问题讨论】:
【参考方案1】:SQL and HiveQL Reference 文档未将 PREPARE
或 EXECUTE
列为可用命令。
您需要完全构建您的 SELECT
语句,然后才能将其发送到 Amazon Athena。
【讨论】:
谢谢。这意味着目前没有办法在 AWS Athena 中参数化 SQL 查询(DDL、select 语句)? 正确。 PreparedStatement 在 Athena JDBC 驱动程序中尚不可用。许多人提出了这个要求,在这里被跟踪:github.com/prestodb/presto/issues/1195【参考方案2】:Athena 不支持 Parameterized 查询。您如何创建可以在查询正文中调用的用户定义函数。参考这里了解更多关于UDFs的信息。
【讨论】:
这个答案让我充满希望,但不,Athena 不支持表值 UDF(您可能会使用它来参数化查询) - 这里的链接文档是关于标量 udfs【参考方案3】:您必须升级到 Athena 引擎版本 2,现在似乎从 2021-03-12 开始支持,但我找不到官方报告:
https://docs.aws.amazon.com/athena/latest/ug/querying-with-prepared-statements.html
【讨论】:
刚刚宣布aws.amazon.com/about-aws/whats-new/2021/07/…以上是关于AWS Athena - 如何参数化 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
AWS Athena (Presto) DISTINCT SQL 查询中的重复结果?