You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift出现relation does not exist错误 解析JSON数组为多行问题

报错原因

FROM子句的执行优先级高于SELECT子句,你在SELECT中定义的别名jp无法被FROM子句识别,所以会抛出relation "jp" does not exist的错误,且Redshift中展开super类型的JSON数组需要配合UNNEST函数使用。

可行解决方案

直接将JSON解析逻辑放到UNNEST函数内即可实现数组元素按行拆分,参考SQL如下:

SELECT 
    JSON_PARSE(c.inputs)::super AS jp,
    d.desc,
    d.name,
    d.type,
    d.values
FROM appen_collect.staticprompts AS c,
UNNEST(JSON_PARSE(c.inputs)::super) AS d
WHERE c.prompttype = 'input'
LIMIT 10;

上述写法中的逗号连接等价于INNER JOIN LATERAL,只会保留inputs字段非空、JSON合法且数组长度≥1的原表记录。

可选优化配置

如果需要保留数组为空、JSON无效的原表记录,可以改用LEFT JOIN LATERAL写法,同时增加JSON合法性校验避免解析报错:

SELECT 
    JSON_PARSE(c.inputs)::super AS jp,
    d.desc
FROM appen_collect.staticprompts AS c
LEFT JOIN LATERAL UNNEST(CASE WHEN IS_VALID_JSON(c.inputs) THEN JSON_PARSE(c.inputs)::super ELSE '[]'::super END) AS d ON TRUE
WHERE c.prompttype = 'input'
LIMIT 10;

内容的提问来源于stack exchange,提问作者Viktor Andriichuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:57:03