【问题标题】:Postgresql json_each equivalent in PrestoPresto 中的 Postgresql json_each 等效项
【发布时间】:2019-11-11 02:58:24
【问题描述】:

我有我曾经使用 json_each(x) 从 Postgresql 中提取的数据,在数据库迁移后,我正在 Presto 中寻找相当于 json_each 的数据,以将我的数据提取到多行中。原来的格式是这样的 {"0":100.0,"57000":75.0,"47000":80.0}

预期输出将键和值分成多行的 2 列

有什么想法吗?

【问题讨论】:

    标签: postgresql presto


    【解决方案1】:

    这可以通过结合Trino (formerly PrestoSQL) JSON functionsUNNEST 来实现。步骤是:

    1. 将原始 JSON 解析为带有 json_parse 的 JSON 类型
    2. 从 JSON 转换为带有 JSON cast expression 的地图
    3. 使用 SQL 标准 UNNEST table function 将映射取消嵌套到行中

    这是一个包含您的示例数据的查询:

    WITH t AS (SELECT '{"0":100.0,"57000":75.0,"47000":80.0}' AS raw_json)
    SELECT key, value
    FROM
        t,
        UNNEST(
            CAST(json_parse(raw_json) AS map(integer, double))
        ) x(key, value)
    

    为了将来参考,这里描述了所有的功能:https://trino.io/docs/current/functions.html

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 2019-09-03
      • 2022-01-17
      • 2012-10-22
      • 1970-01-01
      • 2013-05-03
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多