首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript UDF在气流中失败,但在雪花中工作

JavaScript UDF在气流中失败,但在雪花中工作
EN

Stack Overflow用户
提问于 2021-09-03 18:35:05
回答 1查看 195关注 0票数 1

当我在雪花中奔跑时,我有以下功能:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION dfp.extract_vcode(NAME VARCHAR)
    RETURNS string
    LANGUAGE javascript
    STRICT
    AS '
    const regex = /[[]v=([0-9]+)/ig;
    let s = NAME.match(regex);
    if (s != null) {
        return s[0].split('=')[1];
    } else {
        return null;
    }
    ';

但当我在气流中测试时:

common.snowflake.exceptions.SQLCompilationSnowflakeException:

001003 (42000):019eb4f7-0603-05d7-0000-01b529072596: SQL编译错误:解析错误行6,位置35,近‘。语法错误第6行在位置4意外的'const‘。

处理查询时出错(019eb4f7-0603-05d7-0000-01b529072596):

创建或替换函数dfp.extract_vcode(名称VARCHAR)返回字符串语言javascript严格AS‘const = /[[]v=(0-9+)/ig

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION dfp.parse_metadata(DATA varchar)
    RETURNS OBJECT
    LANGUAGE javascript
    STRICT
    AS '
    if (!DATA) {
        return {}
    }

    let dict = {}
    const parts = DATA.split("|")

    parts.forEach((p) => {
        const split = p.split("=")
        dict[split[0]] = split[1]
    })

    return dict
    ';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-03 18:57:22

问题是,雪花将尝试将传递给它的SQL拆分为多个语句,这些语句由';‘隔开,而在那里使用的解析器不理解javascript语法。

解决方案是用[]包装sql查询。如果将单元素数组传递给雪花运算符,它将假设数组的每个元素都是一个语句,它甚至不会尝试拆分它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69049321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档