Snowflake使用Lateral Flatten展开JSON字段返回NULL问题求助
问题排查与解决
你的SQL执行后字段全为NULL的核心原因是**LATERAL FLATTEN的输入参数写法错误**,导致未正确解析JSON数组,具体修正如下:
错误根源
- Flatten的
input参数误用了raw_data:transcript语法——这种写法用于访问Variant类型字段的嵌套属性,但transcript本身就是存储JSON数组的Variant字段,直接写字段名即可。 - 因Flatten输入错误,
a.value未能正确获取数组中的JSON对象,后续属性提取自然返回NULL。
修正后的SQL
SELECT raw_data.id, raw_data.conv_type, raw_data.transcript, a.value:by::VARCHAR AS "by", a.value:text::VARCHAR AS "text", a.value:time::VARCHAR AS "time" FROM raw_data, LATERAL FLATTEN(input => transcript) a;
补充说明
- 若
transcript实际存储为字符串类型(而非Variant),需先转换为JSON格式:input => PARSE_JSON(transcript)。 - 建议显式列出原表字段(而非用
*),避免展开后的字段与原表字段重名导致歧义。
内容的提问来源于stack exchange,提问作者K Soumya
相关产品推荐
相关产品推荐

