【问题标题】:BigQuery User Defined Aggregation Function?BigQuery 用户定义的聚合函数?
【发布时间】:2017-10-13 22:34:53
【问题描述】:

我知道我可以定义一个User Defined Function 来执行一些自定义计算。我也知道在使用 GROUP BY 子句时,我可以使用“开箱即用”aggregation functions 将值集合减少为单个值。

是否可以定义一个自定义的用户定义的聚合函数以与GROUP BY 子句一起使用?

【问题讨论】:

    标签: google-bigquery aggregate-functions udf


    【解决方案1】:

    事实证明这是可能的(只要我们寻求聚合的组在内存中具有合理的大小)只需一点“胶水” - 即ARRAY_AGG 函数

    步骤如下:

    1. 使用ARRAY<T> 类型的输入参数创建一个UDF,其中T 是您要聚合的值的类型。
    2. 在查询中使用ARRAY_AGG 函数和GROUP BY 子句生成T 数组并传递到您的UDF。

    作为一个具体的例子:

    CREATE TEMP FUNCTION aggregate_fruits(fruits ARRAY<STRING>)
    RETURNS STRING
    LANGUAGE js AS """
    return "my fruit bag contains these items: " + fruits.join(",");
    """;
    
    WITH fruits AS
    (SELECT "apple" AS fruit
    UNION ALL SELECT "pear" AS fruit
    UNION ALL SELECT "banana" AS fruit)
    
    SELECT aggregate_fruits(ARRAY_AGG(fruit))
    FROM fruits
    

    【讨论】:

    猜你喜欢
    • 2019-03-06
    • 2015-12-03
    • 2015-07-06
    • 2021-06-06
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2016-02-26
    相关资源
    最近更新 更多