使用 Google Datalab,如何在 Google BigQuery 中使用 UDF 从复杂查询创建 table?

Using Google Datalab, how to create table from a complex query with UDF in Google BigQuery?

我见过很多类似的问题,但它们并不特定于 Google Cloud Datalab 并且同时使用 UDF,例如 and creating table from query result via python API.

我在未使用 UDF 时设法创建了 table,但当它使用时,它返回错误 "Unknown TVF: myFunc"。

编辑 这是我正在使用的代码:

%%bigquery udf --module transform_field
...udf function...

然后我在 sql 查询中使用了上面的 udf 函数:

%%sql --module querymodule
...complex SELECT query FROM transform_field(table)...

然后我想使用该查询创建另一个 table,如下所示:

%%bigquery execute --target project:dataset.tablename --query querymodule

但它一直显示此错误:

Unknown TVF: TRANSFORM_FIELD

好的,我找到了。事实证明,在 %%bigquery execute 单元格中使用查询之前,您需要通过 python 单元格传递查询:

bq_query = bq.Query(querymodule, udf=transform_field)

所以整个过程应该是这样的:

%%bigquery udf --module transform_field
...udf function...

然后我在 sql 查询中使用了上面的 udf 函数:

%%sql --module querymodule
...complex SELECT query FROM transform_field(table)...

然后使用上面的查询和udf函数创建一个bq.Query对象。

bq_query = bq.Query(querymodule, udf=transform_field)

然后在table创建中使用bq_query

%%bigquery execute --target project:dataset.tablename --query bq_query

我一直对良好睡眠的作用感到惊讶。