【发布时间】:2020-01-03 09:29:59
【问题描述】:
我正在尝试使用 javascript UDF 合并两个变体行。但是,我的每个变体行都有大约 12500 个键。 我的udf定义如下:
CREATE OR REPLACE FUNCTION merge_json(EXT_ROW VARIANT, STG_ROW VARIANT)
RETURNS variant
LANGUAGE JAVASCRIPT
AS
$$
function extend(ext, stg) {
if(ext == null)ext=stg
for (var key in stg) {
if (stg.hasOwnProperty(key)) ext[key] = stg[key];
}
return ext;
}
return extend(EXT_ROW, STG_ROW)
$$;
从雪花文档中,我知道如果脚本使用太多内存或运行到无限循环然后 udf 失败。所以我尝试在上面的函数中删除循环并使其如下:
CREATE OR REPLACE FUNCTION merge_json_v1(EXT_ROW VARIANT, STG_ROW
VARIANT)
RETURNS variant
LANGUAGE JAVASCRIPT
AS
$$
function extend(ext, stg) {
if(ext == null)ext=stg
let merged_row = Object.assign(ext, stg);
return merged_row;
}
return extend(EXT_ROW, STG_ROW)
$$;
函数仍然抛出错误。有人可以帮我解决这个问题吗?
【问题讨论】:
标签: javascript user-defined-functions snowflake-cloud-data-platform variant