try 使用presto查询将字符串分割为qubole中的多个列.

{"field0":[{"startdate":"2022-07-13","lastnightdate":"2022-07-16","adultguests":5,"childguests":0,"pets":null}]}

希望startdate、lastnightdate、成人嘉宾、 children 嘉宾和宠物进入自己的专栏.

我试着解开绳子,但没用.

推荐答案

数据看起来很像json,因此您可以先使用json functions(解析、提取、转换为array(map(varchar, json))array(map(varchar, varcchar)))进行处理,然后使用unnest进行展平:

-- sample data
WITH dataset(json_payload) AS (
    VALUES 
        ('{"field0":[{"startdate":"2022-07-13","lastnightdate":"2022-07-16","adultguests":5,"childguests":0,"pets":null}]}')
) 

-- query
select m['startdate'] startdate,
    m['lastnightdate'] lastnightdate,
    m['adultguests'] adultguests,
    m['childguests'] childguests,
    m['pets'] pets
from dataset,
unnest(cast(json_extract(json_parse(json_payload), '$.field0') as array(map(varchar, json)))) t(m)

输出:

startdate lastnightdate adultguests childguests pets
2022-07-13 2022-07-16 5 0 null

Sql相关问答推荐

在SQL:2003(PGQ)中,Cypher查询语言、GQL、PGQL和属性图查询的常见子集是什么?'

SQL更新,在2个额外的表上使用内部连接

如何在不更改S代码的情况下,判断存储过程调用了多少次clr函数?

如何根据给定条件PostgreSQL迭代减少组中的行数

Access中执行INSERT INTO查询时出现错误消息

使用Kotlin Exposed SQL DSL Select 多个值并排序

snowflake/SQL嵌套的JSON对象和数组

基于是否具有某些数据的关联表覆盖SELECT语句中的列值

组合2个分区表的postgres视图的执行计划正在访问所有分区

显示十进制列,但尽可能显示为整数

根据日期 Select ID 的上一条记录

如何将 START 和 END 日期之间的日期差异作为 SQL 中的单独列获取

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

如何优化仅返回符合条件的三条记录的查询?

更新之前如何获得价值

批量更改WooCommerce中所有产品的税收状态

在 SQL 的每行选项中 Select 最大值

PostgreSQL 中的递归树查询

使用一组值进行分组和计数

在 AWS athena 的视图之上创建视图时,如何消除此错误:列别名列表有 1 个条目但t有 4 列可用?