gpt4 book ai didi

database - 在 presto、hive 中查询数组结构

转载 作者:可可西里 更新时间:2023-11-01 16:36:57 27 4
gpt4 key购买 nike

col-1 有 dep_id(varchar) -

112 

col-2 有数组结构

 [
{
"emp_id": 8291828,
"name": "bruce",
},
{
"emp_id": 8291823,
"name": "Rolli",
}
]

我有一个用例,我需要展平和显示结果。例如,当查询 dep_id - 112 的数据时,我需要在单独的行中显示 emp_id。对于上面的数据,查询时我的结果应该是这样的

id  emp_id
112 8291828
112 8291823

获取数据的查询格式应该是什么?

最佳答案

完成这项工作有几个部分。首先,JSON 数据将显示为 VARCHAR,因此您首先需要对其运行 json_parse 以将其转换为引擎中的 JSON 类型.然后您可以将 JSON 类型转换为普通的 SQL 结构类型,在您的情况下,这是一个行数组 (see cast from JSON) .最后,您对行数组(实际上是一个嵌套表)进行交叉连接。此查询填充为您提供所需的结果

WITH your_table AS (
SELECT
112 AS dep_id
, '[{"emp_id": 8291828, "name": "bruce"}, {"emp_id": 8291823, "name": "Rolli"}]' AS data
)
SELECT
dep_id
, r.emp_id
, r.name
FROM your_table
CROSS JOIN
UNNEST(cast(json_parse(data) as array(row (emp_id bigint, name varchar)))) nested_data(r)

关于database - 在 presto、hive 中查询数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50315902/

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