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

Snowflake使用Lateral Flatten提取嵌套JSON的statusCategory的id

解决Snowflake嵌套JSON字段提取问题

问题原因

你之前的查询用了两次LATERAL FLATTEN,但flatten函数是用来展开JSON数组的,而你的statusCategory是单个JSON对象(非数组结构),对单个对象执行flatten不会返回任何行,这就是查询无输出的根本原因。

针对单个对象的解决方案

如果status和statusCategory始终是单个对象(不是数组),直接通过JSON路径访问即可,不需要使用flatten:

SELECT 
    parse_json(FULL_PAYLOAD):fields:status:name::varchar AS Derivedstatus,
    parse_json(FULL_PAYLOAD):fields:status:statusCategory:id::integer AS Derivedid
FROM SnowflakeTable A;
  • 路径说明:parse_json(FULL_PAYLOAD)将字符串类型的FULL_PAYLOAD转为JSON对象,之后通过:逐层访问嵌套字段
  • 类型转换:根据字段实际类型用::integer或::varchar做显式转换

针对数组场景的扩展方案

如果status或statusCategory是数组结构(比如存在多个status对象),才需要用flatten展开:
比如当status是数组时:

SELECT 
    s.value:name::varchar AS Derivedstatus,
    s.value:statusCategory:id::integer AS Derivedid
FROM SnowflakeTable A,
LATERAL FLATTEN(input => parse_json(FULL_PAYLOAD):fields:status) s;

如果statusCategory本身是数组:

SELECT 
    parse_json(FULL_PAYLOAD):fields:status:name::varchar AS Derivedstatus,
    sc.value:id::integer AS Derivedid
FROM SnowflakeTable A,
LATERAL FLATTEN(input => parse_json(FULL_PAYLOAD):fields:status:statusCategory) sc;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:01:18