代码之家  ›  专栏  ›  技术社区  ›  Louis

是否可以为AWS Athena查询指定参数?

  •  6
  • Louis  · 技术社区  · 8 年前

    我做了一些研究,还没有发现这是否可行,但有人知道是否可以为AWS Athena查询指定参数吗?

    例如,我希望我的查询能够筛选 WHERE merchant_id = {merchant_id} . 是否可以指定此选项,以便我可以对我想要的每个商户使用相同的查询?如果是这样,我将在哪里将输入传递给Athena查询?

    3 回复  |  直到 8 年前
        1
  •  7
  •   Kannaiyan    8 年前

    不能用AWS Athena设置变量。因为Athena在一个会话中只能运行一个查询。

    如果尝试运行多个查询,将出现以下错误。

    enter image description here

    希望有帮助。

        2
  •  6
  •   JonP    6 年前

    我很欣赏这个帖子有点老了,但这是我在尝试做同样的事情时发现的第一个结果之一。我不确定是否会有重大的性能问题,我确信它可以改进,但理论如下:

    使用Athena的accepted WITH函数,创建两个查询来保存变量,将它们连接到原始查询/表,然后在过滤器中使用它们。

    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
    
        3
  •  3
  •   robwhelan    4 年前

    公认的答案不再正确。雅典娜的新v2查询引擎允许“准备好的语句”。

    prepare my_statement from select * from some_table where variable_to_change = ?

    然后,您可以通过传入一个live值来执行prepared语句,如:

    execute my_statement using 3

    这将执行上述操作 select 具有的声明 variable_to_change=3 .

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