Presto 中的 Postgresql json_each 等价物

标签 postgresql presto

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

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

有什么想法吗?

最佳答案

这可以通过组合 Trino (formerly PrestoSQL) JSON functions 来实现与 UNNEST .步骤是:

  1. 使用 json_parse 将原始 JSON 解析为 JSON 类型
  2. 使用 JSON cast expression 从 JSON 转换为 map
  3. 使用 SQL 标准将 map 取消嵌套到行中 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

关于Presto 中的 Postgresql json_each 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56818960/

相关文章:

json - 验证 prestoDB 中的 json 格式

sql - postgres : select rows where a parameter is anything

node.js - knexjs postgresql 迁移运行不正常

ruby-on-rails - 错误 : relation "places" does not exist Heroku db import

sql - 在 Presto SQL 中选择 Top #?

sql - AWS 雅典娜 : Convert a comma delimited string into rows

amazon-web-services - AWS Athena 分区获取所有路径

PostgreSQL:将查询结果保存到文件并获取保存的行数,windows/odbc

python - 如何合并 SQLAlchemy 和 postgresql 中的两个子查询

linux - PRESTO + dose presto cordinator 可以管理 160 个 worker 节点吗?