BigQuery类型:如何定义任意类型的数组?

3

Bigquery SQL-UDFs非常方便,但是否有可能定义数组参数而不指定其元素类型?至少有时候可以定义所有数组操作,而不管具体类型。例如,我们可以创建一个函数来获取数组中最频繁的元素:

CREATE TEMPORARY FUNCTION anyHEAVY(arr Array<ANY TYPE>) AS ((
  SELECT APPROX_TOP_COUNT(a, 1)[OFFSET(0)].value
  FROM UNNEST(arr) as a
));

然而,BQ似乎希望在这里使用特定类型,而通用的“任何类型”占位符不再起作用。直到现在,我只是使用“任何类型”而没有强制参数成为数组的类型。虽然这样可以工作,但我的想法是不太干净的,需要进行额外的检查。我能想象到,任何类型都可能会引起一些麻烦,特别是在嵌套数组或结构的情况下。但如果可以定义只包含“基本”类型(不包括数组和结构)的数组函数,那就太好了。

1
该功能称为“ANY ARRAY”,目前尚未支持。您可以创建一个功能请求来实现它。 - Yun Zhang
为了补充@YunZhang的评论。这里是创建BigQuery功能请求的链接。 - Tlaquetzal
1个回答

4

目前在SQL-UDF中不支持使用ANY TYPEARRAYS。解决方法是,就像你提到的一样,将函数声明为接受ANY TYPE

CREATE TEMPORARY FUNCTION anyHEAVY(arr ANY TYPE)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接