【问题标题】:Using BQ Command line create View with UDF in BigQuery在 BigQuery 中使用 BQ 命令行创建带有 UDF 的视图
【发布时间】:2021-03-13 16:34:30
【问题描述】:

我想使用 UDF 和 BQ 命令行在 BigQuery 中创建视图。 BQ 命令:

bq query --use_legacy_sql=false --project_id="myProject" \
'CREATE OR REPLACE FUNCTION udfFunc(str STRING) RETURNS STRING LANGUAGE js AS 
    """
      data = fromLib(str);
      return JSON.stringify(data);
    """ OPTIONS(library = "gs://<bucket>/lib_file.js");
SELECT'
      col1,
      col2,
      udfFunc(col2) as new_col
    FROM
      `myProject:mySataset.table`'

我收到一个错误 无效值:例程名称“udfFunc”缺少数据集,而 请求中没有设置默认数据集。

【问题讨论】:

  • 看起来错误消息非常清楚地回答了您的问题。对?你也应该使用myProject.mySataset.table 而不是myProject:mySataset.table。同时,您可以只使用 temp udf 而不是永久 - 在这种情况下将 CREATE OR REPLACE 替换为 CREATE TEMP 并且在这种情况下不需要数据集引用
  • 非常感谢您的评论 :) 但我已经厌倦了它给出了一个错误“不支持使用临时用户定义函数创建视图”

标签: javascript command-line google-bigquery user-defined-functions


【解决方案1】:

从您的查询(以及对问题的评论)看来,您在查询期间只需要一个临时函数,这是您的查询:

  1. 定义一个仅在此查询中可见的临时函数
  2. 在查询中立即使用 temp 函数
CREATE TEMP FUNCTION udfFunc(str STRING) RETURNS STRING LANGUAGE js AS 
    """
      data = fromLib(str);
      return JSON.stringify(data);
    """ OPTIONS(library = "gs://<bucket>/lib_file.js");
SELECT
      col1,
      col2,
      udfFunc(col2) as new_col
    FROM
      `myProject:mySataset.table`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2014-08-03
    • 2011-03-11
    相关资源
    最近更新 更多