在BigQuery UDF中使用js包

时间:2018-11-15 07:22:50

标签: google-bigquery user-defined-functions

我试图创建一个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列

我可以使用这些软件包吗?

1 个答案:

答案 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