You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Boto3获取Athena查询的已扫描数据量?

如何通过Boto3获取Athena查询的“Data scanned”值

可以通过Boto3的get_query_execution接口获取该字段值,控制台中的“Data scanned”对应接口返回结果里的DataScannedInBytes字段,它记录了查询扫描的数据字节数。

修改后的代码示例

import boto3
import time

athena_client = boto3.client('athena')

# 启动查询
query_execution = athena_client.start_query_execution(
    QueryString=sql_query,
    ResultConfiguration={'OutputLocation': 's3://my_path'}
)

query_execution_id = query_execution['QueryExecutionId']

query_status = None
while query_status != 'SUCCEEDED':
    time.sleep(1)
    query_execution_details = athena_client.get_query_execution(QueryExecutionId=query_execution_id)
    query_status = query_execution_details['QueryExecution']['Status']['State']
    if query_status not in ['QUEUED', 'RUNNING', 'SUCCEEDED']:
        raise Exception(f"""
        Athena query with ID {query_execution_id} failed or was cancelled.
        Status: {query_status}
        """)

# 获取查询结果
query_result = athena_client.get_query_results(QueryExecutionId=query_execution_id)

# 获取Data scanned数据
data_scanned_bytes = query_execution_details['QueryExecution']['Statistics']['DataScannedInBytes']
# 转换为更易读的GB单位(可选)
data_scanned_gb = data_scanned_bytes / (1024 ** 3)
print(f"Data scanned: {data_scanned_gb:.2f} GB")

说明

  • get_query_execution返回的QueryExecution.Statistics中包含了完整的查询元数据,除了DataScannedInBytes,还可以获取TotalExecutionTimeInMillis(总执行时长)、QueryQueueTimeInMillis(排队时长)等信息。
  • 只有当查询状态为SUCCEEDED时,Statistics字段才会被填充,因此需确保在查询成功后再读取该字段。

内容的提问来源于stack exchange,提问作者Vince M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:00:11