我见过许多类似的问题,但它们并非特定于Google Cloud Datalab并且同时使用UDF,例如query execution shows Unknown TVS error和creating 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
答案 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
我一直对晚安的睡眠感到惊讶。