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