【发布时间】: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
我有我曾经使用 json_each(x) 从 Postgresql 中提取的数据,在数据库迁移后,我正在 Presto 中寻找相当于 json_each 的数据,以将我的数据提取到多行中。原来的格式是这样的 {"0":100.0,"57000":75.0,"47000":80.0}
预期输出将键和值分成多行的 2 列
有什么想法吗?
【问题讨论】:
标签: postgresql presto
这可以通过结合Trino (formerly PrestoSQL) JSON functions 和UNNEST 来实现。步骤是:
json_parse 的 JSON 类型
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
【讨论】: