Warm tip: This article is reproduced from serverfault.com, please click

json-如何查询数组字段(AWS Glue)?

(json - How to query an array field (AWS Glue)?)

发布于 2020-11-20 09:39:23

我在中有一张表格AWS Glue,而且搜寻器已将一个字段定义为数组。内容在S3具有json格式的文件中表是TableA,字段是members

还有许多其他字段,例如字符串,布尔值,双精度值,甚至结构。

我能够使用simpel查询来查询它们,例如:

SELECT
    content.my_boolean,
    content.my_string,
    content.my_struct.value
FROM schema.tableA;

问题是当我添加content.members到查询中时。我得到的错误是:[Amazon](500310) Invalid operation: schema "content" does not exist.

Content存在是因为我能够从json(内容)的主键中选择其他字段。可能与如何在中执行查询agains数组字段有关Spectrum

任何想法?

Questioner
Maik
Viewed
0
Hyruma92 2020-11-20 23:33:56

你必须重命名表以从外部模式中提取字段:

SELECT
    a.content.my_boolean,
    a.content.my_string,
    a.content.my_struct.value
FROM schema.tableA a;

我在数据上遇到了同样的问题,我真的不知道为什么它需要这种类型的转换,但是它可以工作。如果你需要访问数组的元素,则必须将其爆炸:

SELECT member.<your-field>,
FROM schema.tableA a, a.content.members as member;

参考