【问题标题】:BigQuery Types: How to define a array of any type?BigQuery 类型:如何定义任何类型的数组?
【发布时间】: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 功能请求的链接

标签: arrays google-bigquery


【解决方案1】:

目前在 SQL-UDF 中不支持 ARRAYSANY TYPE。正如您所提到的,解决方法是将函数声明为期望任何类型:

CREATE TEMPORARY FUNCTION anyHEAVY(arr ANY TYPE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多