1

我见过很多类似的问题,但它们并不特定于 Google Cloud Datalab 并且同时使用 UDF,例如查询执行显示 Unknown TVS 错误通过 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

4

1 回答 1

2

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

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)...

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

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

然后bq_query在表创建中使用。

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

我一直对睡个好觉的效果感到惊讶。

于 2016-06-06T02:16:04.817 回答