【问题标题】:Construct json from data using Presto使用 Presto 从数据构造 json
【发布时间】:2021-01-14 14:15:21
【问题描述】:

如果我的表中有如下数据

WITH dataset AS (
  SELECT ARRAY[
    CAST(ROW('Bob', 38) AS ROW(name VARCHAR, age INTEGER)),
    CAST(ROW('Alice', 35) AS ROW(name VARCHAR, age INTEGER)),
    CAST(ROW('Jane', 27) AS ROW(name VARCHAR, age INTEGER))
  ] AS users,
  CAST(ROW('Google') AS ROW(company VARCHAR)) AS company
)
SELECT * FROM dataset

预期格式如下:

{
    "company": "Google",
    "users": [
        {
            "name": "Bob",
            "age": 38
        },
        {
            "name": "Alice",
            "age": 35
        },
        {
            "name": "Jane",
            "age": 27
        }

    ]
}

如何构造从这些数据中提取的 JSON?

【问题讨论】:

  • 准确运行查询时返回什么格式?
  • 我得到了顶级列,如公司、用户,但没有关于嵌套键的信息,如姓名、年龄
  • prestodb python客户端返回的列如下:[('users', 'array(row(name varchar, age integer))', None, None, None, None, None), ('company', 'row(company varchar)', None, None, None, None, None)]我不知道如何处理嵌套行

标签: sql json hierarchical-data presto amazon-athena


【解决方案1】:

您可以将其转换为 JSON。

...
SELECT cast(users as json), cast(company as json) FROM dataset

https://trino.io/docs/0.172/functions/json.html

如果没有返回预期的输出,请分享您的预期结果。

【讨论】:

  • 是的,它以 JSON 格式返回,但没有列/字段名称。让我添加我期望的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2016-03-11
相关资源
最近更新 更多