You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery SQL中能否在UDF内部使用聚合函数?

你遇到的报错是因为BigQuery的普通标量SQL UDF默认不支持内部调用聚合函数,这是平台的内置限制。要实现你的需求,需要改用**自定义聚合函数(UDAF)**来封装聚合逻辑:

解决方法

将你的函数声明修改为聚合函数即可,示例代码如下:

CREATE OR REPLACE AGGREGATE FUNCTION my_function(x ANY TYPE) AS (
  APPROX_QUANTILES(x, 100)[OFFSET(25)]
);

使用方式

创建完成后,你可以像调用原生聚合函数一样使用这个自定义函数,示例:

-- 按category分组计算各组的25分位值
SELECT 
  category,
  my_function(value) AS p25_value
FROM your_dataset.your_table
GROUP BY category

补充说明

  • 如果你的需求不是对分组后的多行值计算分位数,而是对单个数组字段内的元素计算分位数,不需要封装为UDF,直接在查询中结合UNNEST操作写原生APPROX_QUANTILES逻辑即可,反而更高效。
  • 自定义聚合函数仅支持封装聚合类逻辑,不支持在非聚合场景下作为标量函数调用。

内容的提问来源于stack exchange,提问作者redarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:03