使用Google Datalab,如何使用Google BigQuery中的UDF从复杂查询创建表格?

时间:2016-06-05 19:15:26

标签: google-bigquery google-cloud-datalab

我见过许多类似的问题,但它们并非特定于Google Cloud Datalab并且同时使用UDF,例如query execution shows Unknown TVS errorcreating table from query result via python API

我设法在不使用UDF时创建表,但是当它被使用时,它返回错误"未知的TVF:myFunc"。

修改 以下是我使用的代码:

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

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

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

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

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

但是它一直显示出这个错误:

  

未知TVF:TRANSFORM_FIELD

1 个答案:

答案 0 :(得分:2)

好吧,我找到了。事实证明,在%%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)

然后在表格创建中使用bq_query

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

我一直对晚安的睡眠感到惊讶。