Sql 从Presto中的深度嵌套json数组对象提取ID的查询
我正在使用Presto并尝试从嵌套json结构中的'source'='dd'提取所有'id',如下所示Sql 从Presto中的深度嵌套json数组对象提取ID的查询,sql,presto,Sql,Presto,我正在使用Presto并尝试从嵌套json结构中的'source'='dd'提取所有'id',如下所示 { "results": [ { "docs": [ { "id": "apple1", "source": "dd" }, { "id": "apple2", "source": "aa" }, {
{
"results": [
{
"docs": [
{
"id": "apple1",
"source": "dd"
},
{
"id": "apple2",
"source": "aa"
},
{
"id": "apple3",
"source": "dd"
}
],
"group": 99806
}
]
}
应将ID[apple1,apple3]提取到Presto中的列中
我想知道在Presto Query中实现这一点的正确方法是什么?如果您的数据具有如您发布的示例中所示的规则结构,您可以使用以下组合,将其强制转换为结构化SQL类型数组/映射/行,并使用来提取您想要的元素: 使用datavalue作为值'{ 结果:[ { 文件:[ { id:apple1, 资料来源:dd }, { id:apple2, 资料来源:aa }, { id:apple3, 资料来源:dd } ], 组别:99806 } ] }', 解析值为 选择castjson_parsevalue作为rowresults arrayrowdocs arrayrowid varchar、source varchar、group bigint 从数据 选择 转换-从生成的文档中提取id 筛选-筛选源为'dd'的文档 展平-将所有文档数组展平为单个文档数组 transformvalue.results,r->r.docs-从结果数组中提取文档数组 , doc->doc.source='dd', 单据->单据id 从解析 上面的查询生成:
_col0
------------------
[apple1, apple3]
(1 row)
如果您的数据具有如您发布的示例中所示的常规结构,则可以结合使用,将其强制转换为结构化SQL类型数组/映射/行,以及使用,并提取所需的元素: 使用datavalue作为值'{ 结果:[ { 文件:[ { id:apple1, 资料来源:dd }, { id:apple2, 资料来源:aa }, { id:apple3, 资料来源:dd } ], 组别:99806 } ] }', 解析值为 选择castjson_parsevalue作为rowresults arrayrowdocs arrayrowid varchar、source varchar、group bigint 从数据 选择 转换-从生成的文档中提取id 筛选-筛选源为'dd'的文档 展平-将所有文档数组展平为单个文档数组 transformvalue.results,r->r.docs-从结果数组中提取文档数组 , doc->doc.source='dd', 单据->单据id 从解析 上面的查询生成:
_col0
------------------
[apple1, apple3]
(1 row)