BigQuery分组查询中使用ARRAY_CONCAT合并数组列报错求助
BigQuery分组查询中使用ARRAY_CONCAT合并数组列报错求助
嗨,我来帮你分析下这个问题~
你遇到的报错原因很明确:在BigQuery的GROUP BY查询规则里,SELECT列表中的每一列要么必须出现在GROUP BY子句中,要么得通过聚合函数来对分组内的多行数据做汇总处理。你当前用的array_concat()是普通的数组拼接函数,它需要传入多个明确的数组参数来拼接,并不是用于分组聚合的函数,所以BigQuery会判定users列既没被分组、也没被聚合,从而抛出错误。
要解决这个问题,你需要用BigQuery专门为数组聚合场景设计的array_concat_agg()函数——它的作用就是将分组内每一行的数组元素拼接成一个完整的数组。把你的SQL做如下修改即可:
SELECT organization, EXTRACT(week FROM date) week_number, SUM(count_users) count_users, array_concat_agg(users) users FROM MyTable GROUP BY organization, EXTRACT(week FROM date) week_number;
如果你的业务需求是要合并后的数组里没有重复的用户,还可以给函数加上DISTINCT关键字,写法如下:array_concat_agg(DISTINCT users)
备注:内容来源于stack exchange,提问作者Tizianoreica
相关产品推荐
相关产品推荐

