如果在 BigQuery 中使用 ARRAY_AGG 函数时遇到长时间运行问题,可以尝试使用以下方法进行优化:
ARRAY_AGG 函数将整个结果集作为输入,如果输入数据较大,则运行时间较长。为了减少输入数据的大小,可以使用 GROUP BY 子句将数据集分组,每个组内的数据量更小,可以更快地计算 ARRAY_AGG 函数。
例如,假设您想要计算 sales 表中每个客户的订单数量。您可以使用以下查询:
SELECT customer_id, ARRAY_AGG(order_id) as orders FROM sales GROUP BY customer_id
如果您只需要获取前若干个值,而不需要完整的数组,可以使用 APPROX_TOP_COUNT 函数代替 ARRAY_AGG 函数。这个函数支持按照估计值来返回数量最多的元素,可以更快地返回结果。
例如,假设您要找到 sales 表中前 10 个客户的订单数量。您可以使用以下查询:
SELECT customer_id, APPROX_TOP_COUNT(order_id, 10) as orders FROM sales GROUP BY customer_id ORDER BY COUNT(order_id) DESC LIMIT 10
以上解决方法可以有效减少 ARRAY_AGG 函数的运行时间,提高查询效率。
上一篇:BigQuery长期存储表列表