示例:
示例 1
此示例显示使用以下数据集和查询时的结果:
{ "Rules": [ {"id": "1"}, {"expr": "y > x"}, {"id": "2", "expr": "z = DEBUG"} ]}
{ "created": "June 27", "modified": "July 6" }
SELECT id FROM S3Object[*].Rules[*].id
{"id":"1"}
{"id":"2"}
{}
Amazon S3 Select 因以下原因生成每个结果:
{
"id":"id-1"}
–
S3Object[0].Rules[0].id
产生了匹配。
{
}
–
S3Object[0].Rules[1].id
与记录不匹配,因此 Amazon S3 Select 发出
MISSING
,后者随后在输出序列化期间变为空记录并返回。
{
"id":"id-2"}
–
S3Object[0].Rules[2].id
产生了匹配。
{
}
–
S3Object[1]
对于
Rules
不匹配,因此 Amazon S3 Select 发出
MISSING
,后者随后在输出序列化期间变为空记录并返回。
如果您不希望 Amazon S3 Select 在找不到匹配项时返回空记录,则可测试值
MISSING
。以下查询将返回与上一查询相同的结果,但会省略空值:
SELECT id FROM S3Object[*].Rules[*].id WHERE id IS NOT MISSING
{"id":"1"}
{"id":"2"}
示例 2
此示例显示使用以下数据集和查询时的结果:
{ "created": "936864000", "dir_name": "important_docs", "files": [ { "name": "." }, { "name": ".." }, { "name": ".aws" }, { "name": "downloads" } ], "owner": "Amazon S3" }
{ "created": "936864000", "dir_name": "other_docs", "files": [ { "name": "." }, { "name": ".." }, { "name": "my stuff" }, { "name": "backup" } ], "owner": "User" }
SELECT d.dir_name, d.files FROM S3Object[*] d
{"dir_name":"important_docs","files":[{"name":"."},{"name":".."},{"name":".aws"},{"name":"downloads"}]}
{"dir_name":"other_docs","files":[{"name":"."},{"name":".."},{"name":"my stuff"},{"name":"backup"}]}
SELECT _1.dir_name, _1.owner FROM S3Object[*]
{"dir_name":"important_docs","owner":"Amazon S3"}
{"dir_name":"other_docs","owner":"User"}