AWS Athena - 无法对操作进行分页:get_query_results

时间:2017-09-27 23:31:06

标签: python python-2.7

我正在尝试使用boto3在AWS Athena中运行查询。但是我收到了这个错误:

 Operation cannot be paginated: get_query_results

这是我的代码:

client = boto3.client(
    'athena',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    region_name='us-east-1'
)

query = """ 

    select 1;

"""
response = client.start_query_execution(
    QueryString=query,
    # QueryExecutionContext={
    #     'Database': 'Test45'
    # },
    ResultConfiguration={
        'OutputLocation': 's3://dft-dwh-files/raw_data/google_analytics/dev-test/'
    }
 )


paginator = client.get_paginator('get_query_results')

response_iterator = paginator.paginate(
    QueryExecutionId='string',
    PaginationConfig={
        'MaxItems': 123,
        'PageSize': 123,
        'StartingToken': 'bafe7afc-07b5-4622-9019-2e3c92853913'
    }
)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

我在这里发布解决方案以防其他人像我一样遇到这个问题......你必须从response发送QueryExecutionId。

query_id = response['QueryExecutionId']

response_iterator = paginator.paginate(
    QueryExecutionId=query_id,
    PaginationConfig={
        'MaxItems': 123,
        'PageSize': 123,
        'StartingToken': None
    }
)

即便如此,如果您的查询需要一段时间,您需要首先实现一个服务器函数,然后在知道查询成功后再执行分页。我建议您检查State功能中的get_query_execution值。