如何创建使用用户定义函数的 BigQuery 视图?
Posted
技术标签:
【中文标题】如何创建使用用户定义函数的 BigQuery 视图?【英文标题】:How do I create a BigQuery view that uses a user-defined function? 【发布时间】:2015-12-08 22:32:56 【问题描述】:我想创建一个 BigQuery 视图,该视图使用调用 user-defined function 的查询。如何告诉 BigQuery 在哪里可以找到 UDF 的代码文件?
【问题讨论】:
【参考方案1】:视图可以引用存储在Google Cloud Storage、内联代码块或本地文件中的 UDF 资源(内容将被加载到内联代码块中)。
要使用 BigQuery UI 创建带有 UDF 的视图,只需像正常运行查询时一样填写 UDF 资源,然后保存为视图。 (换句话说,不需要特殊操作)。
要在从命令行客户端创建视图期间指定这些,请使用 --view_udf_resource 标志:
bq mk --view="SELECT foo FROM myUdf(table)" \
--view_udf_resource="gs://my-bucket/my-code.js"
在上面的示例中,gs://my-bucket/my-code.js
将包含myUdf()
的定义。如果您需要在视图查询中引用多个代码文件,您可以提供多个 --view_udf_resources
标志。
您可以指定 gs:// URI 或本地文件。如果指定本地文件,则代码将被读取一次并打包到内联代码资源中。
通过 API,这是一个名为 userDefinedFunctionResources
的重复字段。它是包含视图 SQL 的 query
字段的兄弟。
【讨论】:
您好,能否提供一个视图中的内联 UDF 示例? 内联 UDF 是指已弃用的 js(...) 语法吗? 我的意思是 CREATE TEMPORARY FUNCTION ...不过我已经联系了 Google 支持,他们告诉我视图中不可能有内联临时 UDF。 感谢您的澄清。目前不支持;我建议在 issuetracker.google.com/issues/… 打开一个功能请求来跟踪它 根据this question,此答案中的方法仅适用于旧版 SQL,不适用于标准 SQL。这符合我今天的经历。以上是关于如何创建使用用户定义函数的 BigQuery 视图?的主要内容,如果未能解决你的问题,请参考以下文章
使用用户定义的函数在 BigQuery 数据集中插入海量数据时如何优化性能
JavaScript 中的 BigQuery 用户定义函数不会修剪分区