我有使用JSON_EACH(X(从PostgreSQL中提取的数据,在数据库迁移之后,我正在寻找Presto中的JSON_EACH的等同,以将我的数据提取到多行中。原始格式就是这样{" 0":100.0," 57000":75.0," 47000":80.0}
预期输出将密钥和值分为2列的多行
有什么想法?
这可以通过将trino(以前为prestosql(JSON函数与UNNEST
相结合来实现。步骤是:
- 用
json_parse
将RAW JSON解析为JSON类型 - 从JSON到带有JSON Cast Expression 的地图
- 用SQL标准
UNNEST
表函数
,将地图解开为行
这是您的示例数据的查询:
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