【问题标题】:Using Google Datalab, how to create table from a complex query with UDF in Google BigQuery?使用 Google Datalab,如何在 Google BigQuery 中使用 UDF 从复杂查询创建表?
【发布时间】:2016-06-05 19:15:26
【问题描述】:

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

我在不使用 UDF 时设法创建了表,但是当它使用时,它返回错误“Unknown 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

【问题讨论】:

  • 请您分享您的一些代码吗?
  • 添加了一些代码,谢谢!

标签: google-bigquery google-cloud-datalab


【解决方案1】:

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

我一直对晚安的效果感到惊讶。

【讨论】:

  • 太棒了!作为附加资源,Datalab wiki 中有一个关于 UDF 的条目,其中包含一个工作示例:github.com/googledatalab/datalab/wiki/UDFs
  • 谢谢,我认为需要在 wiki / 文档中添加更多关于上述特定任务的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多