我试图创建一个BigQuery UDF,它需要一个外部npm软件包。
CREATE TEMPORARY FUNCTION tempfn(message STRING)
RETURNS STRING
LANGUAGE js AS """
var tesfn = require('js-123');
return tesfn(message)
""";
SELECT tempfn("Hello") as test;
它给我一个错误
ReferenceError:tempfn(STRING)第2行未定义require 第15-16列
我可以使用这些软件包吗?
答案 0 :(得分:1)
您无法使用JavaScript UDF中的require
加载npm软件包。但是,您可以从GCS加载外部库,如outlined in the documentation。该文档提供的示例是
CREATE TEMP FUNCTION myFunc(a FLOAT64, b STRING)
RETURNS STRING
LANGUAGE js AS
"""
// Assumes 'doInterestingStuff' is defined in one of the library files.
return doInterestingStuff(a, b);
"""
OPTIONS (
library="gs://my-bucket/path/to/lib1.js",
library=["gs://my-bucket/path/to/lib2.js", "gs://my-bucket/path/to/lib3.js"]
);
SELECT myFunc(3.14, 'foo');
这里假设您在Cloud Storage中拥有具有这些名称的文件,并且其中一个定义了doInterestingStuff
。