【问题标题】:AWS Athena - Get QueryExecutionIds of current dateAWS Athena - 获取当前日期的 QueryExecutionIds
【发布时间】:2021-01-08 07:52:00
【问题描述】:

我想从 Athena 中提取在当前日期运行的查询的执行 ID。查询的数量没有限制。

我正在使用以下代码来提取 Id。但是,一旦获得在当前日期运行的查询的 ID,我就无法找到停止分页的方法。有没有办法只获取当前日期的查询?

另外,我在这里为MaxItems 提供了一个具体号码。这可以动态化吗?

client = boto3.client('athena')
paginator = client.get_paginator('list_query_executions')
response_iterator = paginator.paginate(           
                              PaginationConfig={
                                 'MaxItems': 1000, 
                                 'PageSize': 50
                              }
                   )
for page in response_iterator:
   print(page['QueryExecutionIds'])

【问题讨论】:

    标签: python python-3.x amazon-web-services pagination amazon-athena


    【解决方案1】:

    正如约翰在他的回答中提到的那样,您没有直接的方法可以根据日期过滤执行 ID。但是,一旦您从 list_query_executions 方法中获取了执行 ID 列表,您就可以将此列表传递给 batch_get_query_execution 方法。

    这将返回有关每个执行 ID 的信息,其中还包括每个查询的 SubmissionDateTimeCompletionDateTime。现在,您可以对匹配当前日期的任何此字段应用过滤器。如果执行 ID 超过 50 个,则需要使用 for 循环进行多次迭代

    【讨论】:

    • 好的,谢谢。有没有办法让“MaxItems”成为动态数字?如在每个循环中获取 1000 条记录,直到循环强制结束?
    • 不幸的是,限制是在 API 级别,所以每个调用最多可以有 50 个docs.aws.amazon.com/athena/latest/APIReference/…
    【解决方案2】:

    list_query_executions() 命令不提供日期过滤器。

    因此,您需要在 Python 代码中过滤结果。

    您可以通过跳出for 循环来停止分页。

    【讨论】:

    • 好的。 'MaxItems' 字段呢?'
    • 这是paginator 的一个功能。
    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多