Amazon 的 S3 Select允许用户针对 S3 对象编写 SQL,但关于支持哪些标准 SQL 功能的文档不足。
根据文档,Amazon S3 Select支持AVG
、、、、和。但是当我运行任何聚合查询时,我会收到一个错误,例如COUNT
MAX
MIN
SUM
botocore.exceptions.ClientError:调用 SelectObjectContent 操作时发生错误 (UnsupportedSqlOperation):不支持的 SQL 操作 GROUP BY。请查看服务文档以了解支持的操作。
这是一些要重现的代码:
import boto3
client = boto3.client('s3')
response = client.select_object_content(Bucket='my-bucket', Key='object.csv',
ExpressionType='SQL', Expression="select ID, count(*) from s3object group by s.ID ",
InputSerialization = {'CSV':{"FileHeaderInfo": "Use"}, 'CompressionType': 'GZIP'},
OutputSerialization = {'CSV':{}})
event_stream = response['Payload']
with open('output', 'wb') as f:
for event in event_stream:
if 'Records' in event:
data = event['Records']['Payload']
f.write(data)