描述如何在 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 内联表值函数的返回值的元数据?