描述如何在 SQL 中内联定义 Javascript UDF 函数的 BigQuery 文档在哪里(不是在 UDF 编辑器或单独的文件中)?

Posted

技术标签:

【中文标题】描述如何在 SQL 中内联定义 Javascript UDF 函数的 BigQuery 文档在哪里(不是在 UDF 编辑器或单独的文件中)?【英文标题】:Where is the BigQuery documentation describing how to define a Javascript UDF function inline in SQL (not in the UDF editor or a separate file)? 【发布时间】:2016-03-24 18:04:51 【问题描述】:

在另一个问题https://***.com/a/36145155/2259571 中发布了一个代码示例,该示例定义了一个内联的 javascript UDF 函数,而不是在 BigQuery UI UDF 编辑器中,不在 bq 命令行 --udf_resource 选项中,而是直接从SQL 查询。

在 BigQuery 文档的哪里可以找到有关如何完成此操作的更多信息?

JS(...) 看起来像一个函数,但我在https://cloud.google.com/bigquery/query-reference 的文档中找不到它我在https://cloud.google.com/bigquery/user-defined-functions 中也找不到有关此构造的任何信息我只是想念它吗?还是没有记录?

这是查询的简化版本(在 BigQuery UI 和 bq 命令行工具中运行):

SELECT outputA
FROM JS(
// input table
(
  SELECT text2 as inputA 
  FROM 
    (SELECT 'mikhail' AS text2),
    (SELECT 'mike' AS text2),
    (SELECT 'michael' AS text2),
    (SELECT 'javier' AS text2),
    (SELECT 'thomas' AS text2)
)

// input columns
, inputA

// output schema
, "[name: 'outputA', type:'string']"

// function
, "function(r, emit) 

    emit(
      outputA: 'XX ' + r.inputA + ' XX'
    );

  "
)

输出:

outputA
XX mikhail XX
XX mike XX
XX michael XX
XX javier XX
XX thomas XX

【问题讨论】:

【参考方案1】:

内联 JS 语法是“alpha”语法,故意没有记录在案。我们目前没有移除或更改此功能的计划,但它也不是官方支持的功能。

我们确实计划在未来某个时候为内联 JS UDF 提供官方支持,但语法略有不同。

如果您不顾上述警告仍想使用此功能,请参阅 Mikhail 的回答。

【讨论】:

谢谢杰里米!很高兴知道。我不知道它仍然是 alpha 需要明确的是,BQ 的 JS UDF 已完全启动,并且通常可以在 cloud.google.com/bigquery/user-defined-functions 中获得。只有内联语法不受官方支持。我们在最终发布之前更改了 API,但保留了旧语法以避免破坏早期用户。 是的。这就是我阅读您的答案的方式。谢谢你,再次让 alpha 语法可用! 我不能保证我们会永远继续支持内联“js(...)”语法,但我们会在弃用它之前给用户充足的提前通知时间。也就是说,我强烈建议您不要生成使用它的新查询,以避免潜在的未来迁移。【参考方案2】:

我现在知道你在找什么了。 看起来这在 google bigquery 文档中不可用

但是您得到的示例 - 几乎为您提供了这种使用的结构 - 没有遗漏 - 其他所有内容都在您已经知道的链接中 - https://cloud.google.com/bigquery/user-defined-functions - 仍然适用,并且是您唯一需要的

就我个人而言 - 我在很久以前就从下面的链接中了解到inline js udf(只是其中的几个)http://www.slideshare.net/BigDataSpain/thomas-park-hands-on-with-big-query-javascript-udfs-bigdataspain-2014https://www.youtube.com/watch?v=6TYA6hy44Johttps://www.youtube.com/watch?v=GrD7ymUPt3M(转到 28 + 分钟)

【讨论】:

以上是关于描述如何在 SQL 中内联定义 Javascript UDF 函数的 BigQuery 文档在哪里(不是在 UDF 编辑器或单独的文件中)?的主要内容,如果未能解决你的问题,请参考以下文章

如何检索 sql server 内联表值函数的返回值的元数据?

在路由中定义 Angular 组件内联?

如何在 SQL Server 中将拆分函数转换为内联表值 udf?

如何在 django admin 中自定义多对多内联模型

如何使用 Eureka 创建自定义内联行?

如何指定内联类型中使用的类型变量,是不是与函数定义中使用的类型变量相同?