Amazon S3 Select позволяет пользователю писать SQL для объектов S3, но недостаточно документации о том, какие стандартные функции SQL поддерживаются.
Согласно документации , Amazon S3 Select поддерживает AVG
, COUNT
, MAX
, MIN
и SUM
.Но когда я запускаю любой агрегированный запрос, я получаю сообщение об ошибке типа
botocore.exceptions.ClientError: Произошла ошибка (UnsupportedSqlOperation) при вызове операции SelectObjectContent: Неподдерживаемая операция 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)