Kir*_*rst 3 amazon-s3 boto3 amazon-s3-select
Amazon 的 S3 Select允许用户针对 S3 对象编写 SQL,但没有足够的文档说明支持哪些标准 SQL 功能。
根据该文件,亚马逊S3选择支持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)
Run Code Online (Sandbox Code Playgroud)
根据约翰的评论,只有没有GROUP BY.
这里有一些注意事项和提示
WHEREorLIMIT子句过滤要执行聚合的集合。CAST,例如sum(cast(my_col as float))MAX和MIN将数字列解释为字符串的混合结果,即没有强制转换;它最初成功了,但经过进一步处理后,我无法重现该成功A column name or a path provided in the query expression does not exist| 归档时间: |
|
| 查看次数: |
3823 次 |
| 最近记录: |