标签: amazon-s3-select

s3-select 查询字段名数据

我正在尝试从 s3-select 中的 json 数据中查询数据。

   {
    person = [
    {
            "Id": 1,
            "Name": "Anshu",
            "Address": "Templestowe",
            "Car": "Jeep"
    }
    {
            "Id": 2,
            "Name": "Ben Mostafa",
            "Address": "Las Vegas",
            "Car": "Mustang"
    }
    {
                    "Id": 3,
                    "Name": "Rohan Wood",
                    "Address": "Wooddon",
                    "Car": "VW"
    }
]
}

QUERY = "select * from S3Object s"
QUERY = "select s.person from S3Object s"
QUERY = "select s.person[0] from S3Object s"
QUERY = "select s.person[0].Name from S3Object s"
Run Code Online (Sandbox Code Playgroud)

所有这些查询都可以正常工作并根据需要返回相应的对象,但是当我尝试在名称/汽车上搜索数据时,它不起作用。

QUERY = "select * from S3Object s …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-s3-select

5
推荐指数
2
解决办法
1万
查看次数

aws s3 select可以处理多个文件吗?

我正在使用S3 select从S3存储桶中的文件中查询对象,但想知道我是否可以对多个文件进行处理,或者它是否仅限于一个。我使用aws lambda从文件中写了一个查询,但是当我尝试为另一个文件写另一个查询时,却出现了一条错误消息。

amazon-web-services amazon-s3-select

5
推荐指数
1
解决办法
1459
查看次数

S3选择定价如何工作?在s3 select中返回和扫描的数据是什么

我有100万行CSV数据。选择10行,是否会向我收取10行费用。在S3 Select中返回的数据是什么,扫描的数据意味着什么?

关于S3 select的这些条款的文档较少

amazon-s3 amazon-web-services presto amazon-athena amazon-s3-select

5
推荐指数
1
解决办法
1708
查看次数

无法使用 AWS S3 Select 对 JSON 进行查询

我正在尝试使用 aws 查询 JSON 对象s3-select。我的 JSON 数组结构是这样的:

[
    {
        "title": "s3",
        "url": "https://...",
        "time": "2019-07-02",
        "summary": "by using s3 select..."
    },
    {
        "title": "athena",
        "url": "https://...",
        "time": "2019-07-01",
        "summary": "by using athena..."
    },
    {
        "title": "mysql",
        "url": "https://...",
        "time": "2019-06-30",
        "summary": "by using mysql..."
    }
]
Run Code Online (Sandbox Code Playgroud)

数组内的所有对象都具有相同的属性。现在我想执行一个查询以返回标题等于mysql或的所有对象athena

我在 aws 控制台中尝试了很多不同的脚本,但没有一个起作用。它返回一个空数组/对象或给出错误。例如:

select * from s3object s where s[*].title = 'athena' //NOT WORKING.
select * from S3Object[*] s where s.title = 'athena' //NOT WORKING.
Run Code Online (Sandbox Code Playgroud)

我的 JSON …

sql amazon-s3 amazon-web-services amazon-s3-select

4
推荐指数
1
解决办法
4296
查看次数

S3 Select 中的聚合函数

Amazon 的 S3 Select允许用户针对 S3 对象编写 SQL,但没有足够的文档说明支持哪些标准 SQL 功能。

根据该文件,亚马逊S3选择支持AVGCOUNTMAXMIN,和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)

amazon-s3 boto3 amazon-s3-select

3
推荐指数
1
解决办法
3823
查看次数

在 s3 select 查询中转义单引号

示例数据,存储在 S3 中的文件中。正如你所看到的,我的数据格式是每行一个 json

{"first":  "John", "last": "Smith"}
{"first":  "Mary", "last": "O'Hara"}
{"first":  "Mary", "last": "Oats"}
Run Code Online (Sandbox Code Playgroud)

我的最终目标是按姓氏进行查询,并使用 like 运算符和用户提供的子字符串。所以我一步步从易到难:

此查询有效并返回所有行:

select s.* from s3object s 
Run Code Online (Sandbox Code Playgroud)

好的!我们继续吧。我尝试的下一个查询有效并返回,如预期的那样,John Smith

select s.* from s3object s where s."last" = 'Smith'
Run Code Online (Sandbox Code Playgroud)

下一步是尝试输入姓氏的子字符串。让我们查找姓氏以“O”开头的所有人员。

select s.* from s3object s where s."last" like 'O%';
Run Code Online (Sandbox Code Playgroud)

这有效并返回我的数据集中的两个玛丽。

下一步是行不通的一步。我想查找姓氏以 O 和撇号开头的所有用户。这我没法工作。我试过:

select s.* from s3object s where s."last" like 'O'%'
select s.* from s3object s where s."last" like 'O\'%'
select s.* from s3object s where s."last" like "O'%"
Run Code Online (Sandbox Code Playgroud)

它们都不起作用。如何在 s3 select …

select amazon-s3 amazon-web-services amazon-s3-select

3
推荐指数
1
解决办法
2045
查看次数

AWS S3 Select 出现缺少标头/无效列索引错误

我正在尝试使用 AWS S3SelectObjectContent和 SQL 表达式从以 CSV 格式存储的数据中发出选择请求。我正在使用 Laravel 6。

当我从对象 ( ) 请求所有数据时'Expression' => 'SELECT * from S3Object',一切正常。我检索数据并可以使用它。WHERE当我想在 SQL 表达式中使用 -clause 时,就会出现问题。

这是我的代码:

$client = new S3Client([
            'region' => 'us-east-2',
            'version' => 'latest',
        ]);


$results = $client->selectObjectContent([
            'Bucket' => 'mybucketname', 
            'Key' => 'my_data_file.csv', 
            'ExpressionType' => 'SQL',
            'Expression' => 'SELECT * FROM S3Object s WHERE s.continent = "Europe"',
            'InputSerialization' => [
                'CSV' => [
                    'FileHeaderInfo' => 'USE', 
                    'RecordDelimiter' => "\n", 
                    'FieldDelimiter' => ',',
                ],
            ], …
Run Code Online (Sandbox Code Playgroud)

php amazon-s3 amazon-web-services aws-sdk amazon-s3-select

2
推荐指数
1
解决办法
5036
查看次数