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

RedShift调用json_extract_array_element_text报函数不存在如何修复

RedShift数组拆分报错修复方案

报错根因

json_extract_array_element_text函数不支持SUPER类型的入参,你查询中的values字段是从JSON_PARSE解析后的SUPER结构中提取的数组,和函数要求的入参类型不匹配,同时第三个可选布尔参数多余传参也可能触发函数匹配失败。

修复方案

推荐使用RedShift原生支持SUPER类型的UNNEST语法实现数组拆分,不需要自行创建序列表,写法更简洁性能也更优,且可以直接输出你要求的格式:

WITH all_values AS (
SELECT c.*, d.desc, d.name, d.values as origin_values
FROM (
    SELECT id, created, JSON_PARSE(inputs) AS inputs_super
    FROM course.table
    WHERE prompttype = 'input'
    ) AS c, 
c.inputs_super AS d
ORDER BY created DESC                                                       
LIMIT 10
)
SELECT 
  av.id,
  av.created,
  av.inputs_super,
  av.desc,
  av.name,
  ARRAY[split_val] as values
FROM all_values av, UNNEST(av.origin_values) as t(split_val);

如果要保留你原有序列表的写法,只需要对SUPER类型做转换即可:

-- 仅修改split_values部分代码
split_values AS (
SELECT id, 
  json_extract_array_element_text(JSON_SERIALIZE(values), seq.i) AS size
FROM all_values, seq_0_to_100 AS seq
WHERE seq.i < JSON_ARRAY_LENGTH(JSON_SERIALIZE(values))
)

补充说明

JSON_SERIALIZE函数可以把SUPER类型的数据序列化为标准JSON字符串,匹配普通JSON操作函数的入参要求;而UNNEST语法是RedShift专门用于拆分SUPER数组的内置功能,直接按数组元素拆分多行,不需要手动维护序列长度,适配性更强。

内容的提问来源于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.04 06:09:03