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

Redshift中解析含反斜杠的Super类型JSON数组列问题求助

Redshift解析带反斜杠的Super类型JSON数组方案

针对Super类型列中嵌套转义JSON字符串导致的解析问题,可通过展开数组+转义字符清理+嵌套JSON解析的组合方式提取目标字段,以下是具体实现步骤:

核心思路

  1. 用UNNEST展开Super类型的JSON数组,将数组元素拆分为单独行;
  2. 对嵌套的转义JSON字符串(如parameters.inputs_dict、result),用REPLACE去除反斜杠,再通过JSON_PARSE转换为可解析的Super类型;
  3. 直接提取name、status等顶层字段,按需解析嵌套字段内容。

示例SQL

假设表名为your_table,Super类型列名为json_super_col,执行以下语句可提取所有目标字段:

SELECT 
    json_item.name AS step_name,
    json_item.status AS step_status,
    -- 解析parameters中的嵌套JSON字段
    JSON_PARSE(REPLACE(json_item.parameters.inputs_dict, '\\', '')).date_of_birth AS dob,
    -- 处理result字段:区分JSON格式和纯字符串
    CASE 
        WHEN json_item.result LIKE '{%' THEN JSON_PARSE(REPLACE(json_item.result, '\\', '')).any_missing_input
        ELSE NULL 
    END AS any_missing_input,
    CASE 
        WHEN json_item.result LIKE '{%' THEN JSON_PARSE(REPLACE(json_item.result, '\\', '')).return_message
        ELSE json_item.result 
    END AS result_detail,
    json_item.execution_time AS execution_time
FROM your_table,
     UNNEST(json_super_col) AS t(json_item)

关键细节说明

  • UNNEST函数:Redshift支持用该函数直接展开Super类型的JSON数组,无需额外转换;
  • 转义处理:SQL中反斜杠需用\\表示,REPLACE(json_str, '\\', '')可彻底清理转义符;
  • JSON_PARSE:将清理后的字符串转换为Super类型,即可像普通JSON一样提取子字段;
  • 兼容纯字符串:通过LIKE '{%'判断字段是否为JSON格式,避免解析纯字符串(如示例中的"53")时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:58:20