cos*_*r11 10 amazon-web-services amazon-athena aws-glue-data-catalog
我使用 awsglue 爬取数据,从 s3 文件夹导入 json 数据,该文件夹包含根大括号是如下数组的数据:
[{id: '1', name: 'rick'},{id: '2', name: 'morty'}]
Run Code Online (Sandbox Code Playgroud)
这最终会产生这样的模式:
array<struct<expand:string,id:string,name:string>>
Run Code Online (Sandbox Code Playgroud)
如何name
在 Athena 中查询?
如果我尝试这个:
SELECT * FROM people_s3_buckets WHERE name = "rick";
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
SYNTAX_ERROR: Column 'name' cannot be resolved
Run Code Online (Sandbox Code Playgroud)
也许,有一种方法可以设置 Glue 爬虫以仅添加数组中的元素并避免完全嵌套?
Ily*_*sil 16
为了查询数组中元素的字段,您UNNEST
首先需要它。假设结构array<struct<expand:string,id:string,name:string>>
对应于列members
,你需要这样做
SELECT
*
FROM
people_s3_buckets,
UNNEST(members) as t(member)
WHERE
member.name = 'rick'
Run Code Online (Sandbox Code Playgroud)
请注意,您需要使用单引号而不是双引号。
以下是有关在 AWS Athena 中处理数组的官方 AWS 文档:查询数组
归档时间: |
|
查看次数: |
21210 次 |
最近记录: |