Snowflake:将UDF输出值插入另一表时遇子查询不支持错误
Snowflake插入时子查询报错的解决办法
首先,你的SQL存在逻辑错误:子查询只返回ID字段,但外层SELECT却引用了Name和str_value——这两个字段在子查询结果里根本不存在,需要先修正这个问题。
针对你遇到的“Unsupported subquery type cannot be evaluate”报错,Snowflake对部分嵌套子查询的解析支持有限,尤其是和自定义函数(UDF)结合时,可通过以下方式修复:
改用CTE重构查询
把嵌套子查询改成公共表表达式(CTE),让Snowflake能更清晰地生成执行计划:WITH distinct_data AS ( SELECT DISTINCT Name, str_value FROM AA.BB.CC -- 确保这里返回你需要的字段 ) INSERT INTO AA.BB.REF SELECT Name, AA.BB.UDF(str_value) FROM distinct_data;简化查询结构
如果只是需要对原表数据去重后调用UDF,直接把DISTINCT放到外层查询即可,省去子查询嵌套:INSERT INTO AA.BB.REF SELECT DISTINCT Name, AA.BB.UDF(str_value) FROM AA.BB.CC;若UDF是表函数,用LATERAL JOIN关联
如果你的UDF是返回多行结果的表函数,需要用LATERAL JOIN来关联调用:INSERT INTO AA.BB.REF SELECT DISTINCT c.Name, udf_out.* FROM AA.BB.CC c LATERAL JOIN TABLE(AA.BB.UDF(c.str_value)) udf_out;
内容的提问来源于stack exchange,提问作者HMP
相关产品推荐
相关产品推荐

