Javascript 在BigQuery中使用BQ命令行创建带有自定义项的视图

Javascript 在BigQuery中使用BQ命令行创建带有自定义项的视图,javascript,command-line,google-bigquery,user-defined-functions,Javascript,Command Line,Google Bigquery,User Defined Functions,我想使用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

我想使用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`'
bq查询--使用\u legacy\u sql=false--project\u id=“myProject”\
'创建或替换函数udfFunc(str STRING)将字符串语言js返回为
"""
数据=fromLib(str);
返回JSON.stringify(数据);
“”“OPTIONS(library=“gs:///lib_file.js”);
选择'
col1,
col2,
udfFunc(col2)作为新的
从…起
`myProject:mySataset.table`'
我犯了一个错误 无效值:例程名称“udfFunc”在运行时缺少数据集 请求中未设置默认数据集。

根据您的查询(以及对问题的评论),您似乎只需要在查询期间使用temp函数,这是您需要执行的查询:

  • 定义一个仅在此查询中可见的临时函数
  • 在查询中立即使用temp函数
  • CREATE TEMP函数udfFunc(str STRING)将字符串语言js返回为
    """
    数据=fromLib(str);
    返回JSON.stringify(数据);
    “”“OPTIONS(library=“gs:///lib_file.js”);
    挑选
    col1,
    col2,
    udfFunc(col2)作为新的
    从…起
    `myProject:myataset.table`
    
    看起来错误消息非常清楚地回答了您的问题。正确的?您还应该使用
    myProject.myataset.table
    而不是
    myProject:myataset.table
    。同时,您可以只使用temp udf而不是permanent-在这种情况下,将
    创建或替换为
    创建temp
    ,并且在这种情况下不需要数据集引用。非常感谢您的评论:)但我已经厌倦了这一点,它给出了一个错误“不支持使用临时用户定义函数创建视图”