可以为 AWS Athena 查询指定参数吗?
Possible to Specify a Parameter For AWS Athena Query?
我做了一些研究,还没有发现这是否可行,但是有人知道您是否可以为 AWS Athena 查询指定参数吗?
例如,我希望我的查询能够过滤 WHERE merchant_id = {merchant_id}
。是否可以指定这一点,以便我可以对我想要的每个商家使用相同的查询?如果是这样,我应该在哪里将输入传递给 Athena 查询?
无法使用 AWS Athena 设置变量。由于 Athena 在一个会话中只能 运行 一个查询。
如果您尝试 运行 多个查询,您将收到以下错误。
希望对您有所帮助。
我很欣赏这个线程有点旧,但它是我尝试做同样的事情时发现的第一个结果。我不确定是否会有明显的性能问题,我确定它可以改进,但理论如下:
使用 Athena 接受的 WITH 函数,创建几个查询来保存您的变量,将它们加入您的原始 query/table,然后在过滤器中使用它们。
WITH startdate AS (SELECT DATE('2019-12-01') AS v_startdate), enddate AS (SELECT DATE('2019-12-31') AS v_enddate)
SELECT *SQL HERE* FROM table_name
LEFT JOIN startdate ON 1=1
LEFT JOIN enddate ON 1=1
WHERE table_name.start_date >= v_startdate
AND table_name.end_date <= v_enddate
已接受的答案不再正确。 Athena 的新 v2 查询引擎允许“准备好的语句”。
prepare my_statement from select * from some_table where variable_to_change = ?
然后,您可以通过传入一个实时值来执行准备好的语句,例如:
execute my_statement using 3
这将使用 variable_to_change=3
.
执行上面的 select
语句
https://docs.aws.amazon.com/athena/latest/ug/querying-with-prepared-statements.html
我做了一些研究,还没有发现这是否可行,但是有人知道您是否可以为 AWS Athena 查询指定参数吗?
例如,我希望我的查询能够过滤 WHERE merchant_id = {merchant_id}
。是否可以指定这一点,以便我可以对我想要的每个商家使用相同的查询?如果是这样,我应该在哪里将输入传递给 Athena 查询?
无法使用 AWS Athena 设置变量。由于 Athena 在一个会话中只能 运行 一个查询。
如果您尝试 运行 多个查询,您将收到以下错误。
希望对您有所帮助。
我很欣赏这个线程有点旧,但它是我尝试做同样的事情时发现的第一个结果。我不确定是否会有明显的性能问题,我确定它可以改进,但理论如下:
使用 Athena 接受的 WITH 函数,创建几个查询来保存您的变量,将它们加入您的原始 query/table,然后在过滤器中使用它们。
WITH startdate AS (SELECT DATE('2019-12-01') AS v_startdate), enddate AS (SELECT DATE('2019-12-31') AS v_enddate)
SELECT *SQL HERE* FROM table_name
LEFT JOIN startdate ON 1=1
LEFT JOIN enddate ON 1=1
WHERE table_name.start_date >= v_startdate
AND table_name.end_date <= v_enddate
已接受的答案不再正确。 Athena 的新 v2 查询引擎允许“准备好的语句”。
prepare my_statement from select * from some_table where variable_to_change = ?
然后,您可以通过传入一个实时值来执行准备好的语句,例如:
execute my_statement using 3
这将使用 variable_to_change=3
.
select
语句
https://docs.aws.amazon.com/athena/latest/ug/querying-with-prepared-statements.html