使用Python API客户端在BigQuery中上传UDF

问题描述

我想在BigQuery中的特定数据集中创建一个UDF。我已经尝试过使用 Python客户端中的create_table和其他API方法,但似乎没有一个起作用。

是否有任何方法方法可以将UDF(存储在文件中并以字符串形式读取)上传到BigQuery中?

解决方法

这是我的UDF:

$ cat test.udf
CREATE OR REPLACE FUNCTION dataset_name.addFourAndDivideAny(x ANY TYPE,y ANY TYPE) AS ((x + 4) / y);

这是我在Cloud Shell上运行的上传命令(它将要求授权):

bq query --nouse_legacy_sql  < test.udf

在python中:

from google.cloud import bigquery

client = bigquery.Client()

with open('test.udf','r') as file:
     QUERY = file.read().replace('\n','')

query_job = client.query(QUERY)

我在文件中的单行中都有UDF,但是您也可以使用多行文件。只需确保QUERY字符串构造正确即可。