【发布时间】:2020-03-10 13:51:26
【问题描述】:
Bigquery SQL-UDF 非常方便,但是否有可能在不指定其元素类型的情况下定义数组参数?至少有时在所有数组上定义操作而不考虑特定类型会很好。例如,可以创建一个函数来获取数组中最常见的元素,如下所示:
CREATE TEMPORARY FUNCTION anyHEAVY(arr Array<ANY TYPE>) AS ((
SELECT APPROX_TOP_COUNT(a, 1)[OFFSET(0)].value
FROM UNNEST(arr) as a
));
但是,BQ 似乎在这里需要一个特定的类型,而通用的“ANY TYPE”占位符不再起作用。到目前为止,我只是使用“任何类型”类型,而没有强制参数是一个数组。这可行,但恕我直言,它不是很干净,需要额外检查。我可以想象,任何类型都会引起一些麻烦,尤其是在嵌套数组或结构的情况下。但是,如果可以定义仅包含“基本”类型(不包括数组和结构)的数组函数,那就太好了。
【问题讨论】:
-
该功能名为
ANY ARRAY,尚不支持。您可以为其创建功能请求。 -
补充@YunZhang 评论。 Here's 创建 BigQuery 功能请求的链接