gpt4 book ai didi

amazon-athena - 在 AWS Athena 中查询嵌套的 JSON 结构

转载 作者:行者123 更新时间:2023-12-04 14:22:08 27 4
gpt4 key购买 nike

我得到了以下格式的带有嵌套结构的 JSON 文档

{
"id": "p-1234-2132321-213213213-12312",
"name": "athena to the rescue",
"groups": [
{
"strategy_group": "anyOf",
"conditions": [
{
"strategy_conditions": "anyOf",
"entries": [
{
"c_key": "service",
"C_operation": "isOneOf",
"C_value": "mambo,bambo,jumbo"
},
{
"c_key": "hostname",
"C_operation": "is",
"C_value": "lols"
}
]
}
]
}
],
"tags": [
"aaa",
"bbb",
"ccc"
]
}

我在 Athena 中创建了表来支持它使用以下内容
CREATE EXTERNAL TABLE IF NOT EXISTS filters ( id string, name string, tags array<string>, groups array<struct<
strategy_group:string,
conditions:array<struct<
strategy_conditions:string,
entries: array<struct<
c_key:string,
c_operation:string,
c_value:string
>>
>>
>> ) row format serde 'org.openx.data.jsonserde.JsonSerDe' location 's3://filterios/policies/';

我目前的目标是根据条件条目列进行查询。我尝试了一些查询,但是 sql 语言不是我最大的交易 ;)

我现在得到了这个查询,它给了我条目
select cnds.entries from 
filters,
UNNEST(filters.groups) AS t(grps),
UNNEST(grps.conditions) AS t(cnds)

然而,由于这是一个复杂的数组,它让我有些头疼,什么才是正确的查询方式。

任何提示表示赞赏!

谢谢
电阻

最佳答案

我不确定我是否理解您的查询。看看下面这个例子,也许对你有用。

select id, name, tags,
grps.strategy_group,
cnds.strategy_conditions,
enes.c_key,enes.c_operation, enes.c_value from
filters,
UNNEST(filters.groups) AS t(grps),
UNNEST(grps.conditions) AS t(cnds),
UNNEST(cnds.entries) AS t(enes)
where enes.c_key='service'

关于amazon-athena - 在 AWS Athena 中查询嵌套的 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com