使用外部 UDF 库运行 BigQuery Standard SQL

Posted

技术标签:

【中文标题】使用外部 UDF 库运行 BigQuery Standard SQL【英文标题】:Running BigQuery Standard SQL with external UDF library 【发布时间】:2017-11-05 19:08:04 【问题描述】:

我正在尝试使用 BigQuery 在运行 UDF 时包含外部库的功能,使用标准 SQL。

CREATE TEMPORARY FUNCTION myFunc(a FLOAT64, b STRING)
  RETURNS STRING
  LANGUAGE js AS
"""
    return doInterestingStuff(a, b);
"""
OPTIONS (
  library="gs://my-bucket/path/to/lib1.js"
);

SELECT myFunc(3.14, 'foo');

对于下面的 lib1.js,我有:

CREATE TEMPORARY FUNCTION doInterestingStuff(a FLOAT64, b STRING)
      RETURNS STRING
      LANGUAGE js AS
    """
        return a*2;
    """;

运行时出现错误:

Unexpected identifier at gs://my-bucket/path/to/lib1.js line 1, columns 7-16

包含的库文件的预期结构是什么?

【问题讨论】:

【参考方案1】:

lib1.js 的内容需要是 javascript,而不是 SQL 语句。在您的情况下,内容应该是:

function doInterestingStuff(a, b) 
  return a * 2;

【讨论】:

以上是关于使用外部 UDF 库运行 BigQuery Standard SQL的主要内容,如果未能解决你的问题,请参考以下文章

在 BigQuery UDF 中使用 js 包

使用 DataFlow Engine 运行 bigquery 查询时,如何使用 UDF(和其他函数)?

BigQuery 获取外部代码资源的元数据时出错

在 BigQuery 的查询中使用 UDF 作为列

在 BigQuery UDF 中运行 SQL,可能是递归的

在pyspark的pandas_udf中使用外部库