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

时间:2016-03-24 18:04:52

标签: google-bigquery

在另一个问题https://stackoverflow.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

2 个答案:

答案 0 :(得分: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-2014
https://www.youtube.com/watch?v=6TYA6hy44Jo
https://www.youtube.com/watch?v=GrD7ymUPt3M(转到28分钟以上)

答案 1 :(得分:2)

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

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

如果您想使用此功能,尽管有上述警告,请参阅Mikhail的回答。