Snowflake中含数组的嵌套JSON字段查询问题求助
Snowflake中查询JSON数组字段的解决方案
你的问题在于JSONBlob2中的e和h字段是数组结构,直接通过jb:e:f无法获取值——因为数组本身不是对象,必须先访问数组内的元素,或者将数组展开后再提取字段。
解决方案1:直接访问数组第一个元素
由于你的示例中每个数组仅包含一个对象,可以直接通过索引[0]定位数组内的对象,再提取字段:
select jb:e[0]:f::text f, jb:h[0]:i::text i from ( select PARSE_JSON(JSONBlob2) jb from myTable )
解决方案2:用FLATTEN展开数组(适用于数组含多个元素的场景)
如果后续数组可能包含多个对象,建议使用FLATTEN函数将数组展开为行,再关联提取字段:
select e_item.value:f::text f, h_item.value:i::text i from myTable, lateral flatten(input => PARSE_JSON(JSONBlob2):e) e_item, lateral flatten(input => PARSE_JSON(JSONBlob2):h) h_item
额外注意事项
你提供的JSONBlob2示例存在语法错误:两个数组字段e和h之间缺少逗号,正确的JSON格式应为:
{"e": [{"f":"321", "g":"432"}], "h": [{"i":"couch", "j":"sofa"}] }
如果原始数据存在此类语法问题,PARSE_JSON会返回NULL,导致查询无结果,需要先修正JSON格式。
内容的提问来源于stack exchange,提问作者CLV
相关产品推荐
相关产品推荐

