代码之家  ›  专栏  ›  技术社区  ›  kee

BigQuery:它支持UDAF吗?

  •  1
  • kee  · 技术社区  · 7 年前

    我想BigQuery不支持UDAF,因为我只能找到关于UDF的内容。BigQuery支持UDAF吗?如果没有,是否有任何方法可以对聚合结果运行UDF?可能是使用ARRAY_AGG?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Elliott Brossard    7 年前

    是的,可以使用ARRAY_AGG对UDAF建模。例如,您可以执行以下操作:

    CREATE TEMP FUNCTION AggX(arr ARRAY<INT64>) AS (
      (SELECT SUM(x * x) FROM UNNEST(arr) AS x)
    );
    
    SELECT id, AggX(ARRAY_AGG(x)) AS result
    FROM dataset.table
    GROUP BY id
    

    根据您想要实现的逻辑类型,您甚至可以让函数接受 ARRAY<STRUCT<...>> ARRAY_AGG(STRUCT(...)) 为它构建输入。