Presto中的Postgresql json_each等效项

时间:2019-06-29 16:01:34

标签: postgresql presto

我有一些以前使用json_each(x)从Postgresql提取的数据,我正在数据库迁移后在Presto中寻找与json_each等效的数据,以将我的数据提取到多行中。原始格式是这样的 {“ 0”:100.0,“ 57000”:75.0,“ 47000”:80.0}

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

有什么主意吗?

1 个答案:

答案 0 :(得分:3)

这可以通过将Presto JSON functionsUNNEST组合来完成。步骤是:

  1. 使用json_parse
  2. 将原始JSON解析为JSON类型
  3. 使用JSON cast expression
  4. 从JSON投射到地图
  5. 使用SQL标准UNNEST table function
  6. 将地图嵌套到行中

以下是包含您的示例数据的查询:

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://prestosql.io/docs/current/functions.html