Snowflake中执行JS/JSON函数报语法错误,该如何排查解决?
Snowflake自定义函数报错及脚本类型解答
脚本类型判定
你提供的代码是JavaScript,不存在「JSON Script」这类可执行脚本的概念,JSON本身是轻量级数据交换格式,不支持编写函数逻辑。
报错原因
你遇到的SQL编译错误是因为Snowflake默认解析器优先识别SQL语法,你直接执行裸的JavaScript代码时,第一行开头的function关键字不符合SQL语法规范,因此触发了「意外的'function'关键字」的报错。
Snowflake中运行JavaScript逻辑必须包裹在SQL的自定义函数、存储过程的声明结构中,不能直接单独执行JS代码。
正确创建该UDF的参考示例
CREATE OR REPLACE FUNCTION rsToJSON(query OBJECT) RETURNS ARRAY LANGUAGE JAVASCRIPT AS $$ function rsToJSON(query) { var i; var row = {}; var table = []; while (query.resultSet.next()) { for(col = 1; col <= query.statement.getColumnCount(); col++) { row[query.statement.getColumnName(col)] = query.resultSet.getColumnValue(col); } table.push(row); } return table; } $$;
如果你是要在Snowflake存储过程中使用这段逻辑,同样需要把JS代码放在存储过程的AS $$ ... $$包裹块中即可。
内容的提问来源于stack exchange,提问作者user1810575
相关产品推荐
相关产品推荐

